2016-06-22 2 views
0

У меня есть макрос, установленный на место, чтобы покрыть индикаторы комментариев (как правило, красные), чтобы он вписывался в цвет ячейки. Мне было интересно, какие дополнения мне нужно сделать для этого макроса, чтобы вместо этого вывести цветовую схему из ячейки, ссылаясь на нее, и разместить это значение для цветовой схемы?Вытаскивание цветовой схемы из ячейки и применение к макросъемке

Option Explicit 

Sub CoverCommentIndicator() 
Dim ws As Worksheet 
Dim cmt As Comment 
Dim rngCmt As Range 
Dim shpCmt As Shape 
Dim shpW As Double 'shape width 
Dim shpH As Double 'shape height 

Set ws = ActiveSheet 
shpW = 6 
shpH = 4 

For Each cmt In ws.Comments 
    Set rngCmt = cmt.Parent 
    With rngCmt 
    Set shpCmt = ws.Shapes.AddShape(msoShapeRightTriangle, _ 
     rngCmt.Offset(0, 1).Left - shpW, .Top, shpW, shpH) 
    End With 
    With shpCmt 
    .Flip msoFlipVertical 
    .Flip msoFlipHorizontal 
    .Fill.ForeColor.SchemeColor = 10 
    .Fill.Visible = msoTrue 
    .Fill.Solid 
    .Line.Visible = msoFalse 
    End With 
Next cmt 
+0

Не было бы проще добавить ваши комментарии в качестве входного сообщения при проверке данных? Затем ваши комментарии появятся, когда ячейка будет выбрана, но в ячейке нет индикатора. – TheEngineer

+0

На данный момент я работаю над выяснением того, как я это сделаю, но макрос наиболее логичен с комментарием. Мне нужно прокомментировать каждую ячейку со ссылкой на значения нескольких ячеек на другом листе. Насколько я знаю, невозможно сделать входное сообщение через проверку данных, но может быть возможно с помощью макросов. – adrenom

+0

Вы можете использовать свойство '.Validation.InputMessage' ячейки для установки вашего входного сообщения в макросе, если необходимо. Я стараюсь избегать добавления ненужных форм в листы Excel, потому что они могут вызвать и другие непреднамеренные проблемы; особенно если они невидимы. – TheEngineer

ответ

1

Вместо того, чтобы добавлять фигуры в ячейки и пытаться сопоставить цвета ячеек, просто добавьте свой комментарий в качестве входного сообщения при проверке данных. Затем ваши комментарии появятся, когда ячейка будет выбрана, но в ячейке нет индикатора.

Если вам нужно сделать это с помощью макроса, вы можете использовать свойство ячейки .Validation.InputMessage для установки вашего входного сообщения. Попробуйте один раз с помощью макросъемщика, а затем измените код в соответствии с вашими потребностями.

0

Это должно покрыть:

.Fill.ForeColor.SchemeColor = cmt.Parent.Interior.ColorIndex + 2 ' + 2 just a number to let the color be different from the color index in the cell 

Кроме того, я думаю, что это хорошая идея enum the colors вы можете определить для этого.

+0

Код все еще, кажется, делает его крышкой красного цвета. С перечислимыми цветами у меня есть около 7 разных цветов, которые я буду использовать, но они меняются в зависимости от условий, которые я установил, есть ли хороший способ встроить их в макрос? Я новичок в VBA, пытаясь узнать как можно больше, позвольте мне дать этот код выстрел. – adrenom

+0

вы можете установить индексы цвета в переменные, а затем в вашем коде условия просто скажите myCell.Interior.ColorIndex = variable1. Или вы могли бы сказать myCell.Interior.ColorIndex = myCell2.Interior.ColorIndex, чтобы сопоставить его с цветом другой ячейки – justkrys

+0

@adrenom, это странно, я тестировал его и работал, вы пробовали разные цветовые комбинации? Обратите внимание, что это не меняет исходный цвет, это просто приятное обходное решение, которое добавляет форму в ячейку, чтобы имитировать «стрелку» из комментариев, я не думаю, что есть способ изменить исходный. – Sgdva

Смежные вопросы