Я не очень хорошо знаком с VBA, но мне нужно было изменить свой Excel, чтобы разрешить более трех условных форматов.
Я нашел приведенный ниже код в Интернете и хочу изменить цвет ячейки в зависимости от содержимого с выбором из шести различных значений.
Мой код:
Private Sub Worksheet_Change(ByVal Target As Range)
Set MyPlage = Range("G3:AG115")
For Each Cell In MyPlage
If Cell.Value = "." Then
Cell.Interior.ColorIndex=28
Cell.Font.Bold = True
End If
If Cell.Value = "X1" Then
Cell.Interior.ColorIndex=32
Cell.Font.Bold = True
End If
If Cell.Value = "1X" Then
Cell.Interior.ColorIndex=6
Cell.Font.Bold = True
End If
If Cell.Value = "2X" Then
Cell.Interior.ColorIndex=45
Cell.Font.Bold = True
End If
If Cell.Value = "3X" Then
Cell.Interior.ColorIndex=4
Cell.Font.Bold = True
End If
If Cell.Value = "XY" Then
Cell.Interior.ColorIndex=44
Cell.Font.Bold = True
End If
If Cell.Value = "bt" Then
Cell.Font.ColorIndex=27
Cell.Interior.ColorIndex=27
End If
If Cell.Value = "bl" Then
Cell.Font.ColorIndex=28
Cell.Interior.ColorIndex=28
End If
If Cell.Value <> "bt" And Cell.Value <> "bl" And Cell Value <> "." And Cell.Value <> "X1" And Cell.Value <> "1X" And Cell.Value <> "2X" And Cell.Value <> "3X" And Cell.Value <> "XY" Then
Cell.Interior.ColorIndex=xlNone
End If
Next
End Sub
Содержимое выбирается либо из выпадающего списка, либо записываются bt и bl, чтобы проверить, выделены ли эти строки.
Когда я пытаюсь изменить содержимое, я получаю Error: 13 Type Mismatch
.
Линия
If Cell.Value = "." Then
выделен как источник ошибки (я думал, что проблема может быть в "."
, но если я удалю этот набор инструкций, тогда строка
If Cell.Value = "X1" Then
выделено)
Я погуглил и увидел, что вы можете сделать цикл, который, если ошибка Then Next
, я не уверен, как именно это закодировать, и я бы предпочел решить проблему кодирования, чем сделать быстрое исправление.
Если у кого-то есть идеи о том, где я ошибаюсь/решения, это было бы здорово.
For Each Cell In MyPlage
, если можно просто проверитьFor Each Cell In Target
? - person Patrick Honorez   schedule 08.01.2012