2015-03-20 9 views
0
Sub colorcells() 
    Dim cell As Range 
    For Each cell In Range("Range1") 
     If InStr(cell.Value, "Person1") > 0 Then 
      cell.Interior.Color = XlRgbColor.rgbSienna 
     ElseIf InStr(cell.Value, "") > 0 Then 
      cell.Interior.Color = XlRgbColor.rgbLightGrey 
     ElseIf InStr(cell.Value, "") = 0 Then 
      cell.Interior.Color = XlRgbColor.rgbWhite 
     End If 
    Next cell 
End Sub 

Hello, Последняя функция в коде очищает мои ячейки, если нет цветов. Я хотел бы добавить ячейки слияния (потому что я использую несколько цветных ячеек) и применять все границы к ячейке. Я пробовал некоторые, но он не работал, вероятно, потому, что я не могу использовать Dim cell As Range для их слияния. Благодарим вас за помощь.Слияние ячеек в VBA


Спасибо за ответы. Я не мог хорошо объяснить. Я хочу объединить ячейки после этого

ElseIf InStr(cell.Value, "") = 0 Then 
      cell.Interior.Color = XlRgbColor.rgbWhite 

Что я хочу сделать, это очистка. Если строк нет, мой код делает эти ячейки белыми. Тогда я нуждаюсь в нем, также объединяет ячейки, которые не имеют строкового значения.

+3

Слитых клетки Вредные, BAD и его следует избегать. Просто создайте границу вокруг нескольких ячеек. Если вы хотите центрировать текст, используйте '.HorizontalAlignment = xlCenterAcrossSelection' – teylyn

+2

Хотя комментарий @ teylyn был поддержан, я не могу согласиться. Объединенные ячейки следует использовать с осторожностью, но они обеспечивают функциональность, которая недоступна другим способом. Вы можете спросить, является ли ячейка частью объединенной области и какая объединенная область, чтобы они могли поддерживаться и управляться. Если вы используете 'xlCenterAcrossSelection', чтобы сосредоточиться на A: C и отдельно по D: F, вы не можете позже определить, какие ячейки являются частью какой группы. Если есть полезная функциональность, связанная с 'xlCenterAcrossSelection', я хотел бы узнать об этом. –

+0

Вы говорите, что хотите добавить объединенные ячейки в свою подпрограмму, но вы не говорите, почему не можете. Пожалуйста, опишите вашу проблему. –

ответ

0

Я также немного туман относительно того, чего вы, возможно, захотите достичь. Код, который вы предоставили, кажется мне очень хорошим. Тем не менее, если вы хотите, чтобы лечить слившиеся клетки несколько по-другому, то следующий код адаптация может быть полезным:

Sub colorcells() 
Dim cell As Range 

For Each cell In Range("Range1") 
    If cell.Address = cell.MergeArea.Cells(1, 1).Address And cell.MergeArea.Cells.Count > 1 Then 
     Debug.Print "Here is a merged cell range starting (top left corner): " & cell.Address 
     cell.Interior.Color = XlRgbColor.rgbRed 
    Else 
     If InStr(cell.Value, "Person1") > 0 Then 
      cell.Interior.Color = XlRgbColor.rgbSienna 
     ElseIf InStr(cell.Value, "") > 0 Then 
      cell.Interior.Color = XlRgbColor.rgbLightGrey 
     ElseIf InStr(cell.Value, "") = 0 Then 
      cell.Interior.Color = XlRgbColor.rgbWhite 
     End If 
    End If 
Next cell 

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