Я пытаюсь использовать VBA для автоматического изменения цвета ячеек, содержащих символ трубопровода «|».Ошибка Excel VBA
При обнаружении, я хотел бы, чтобы код удалял символ трубопровода "|" и измените цвет ячейки на серый. Код не работает, и приведен ниже:
With Sheets("DATASHEET").Range("AG1:BG53")
Set c = .Find("|", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = ""
c.Pattern = xlSolid
c.PatternColorIndex = xlAutomatic
c.ThemeColor = xlThemeColorDark1
c.TintAndShade = -0.249977111117893
c.PatternTintAndShade = 0
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
Когда я бег VBA, я получаю следующее сообщение об ошибке:
ошибка времени выполнения «91»: переменной объекта или с блоком переменная не установлена
код терпит неудачу здесь:
Loop While Not С Nothing И c.Address <> firstAddress
После аварии, мои отладки Часы имеют следующие значения:
Expression firstAddress" = $AG$37
(который является первой ячейки в диапазоне, который слился и центром - это требование)
Выражение c.Address = переменная объекта или с переменной блока не установлена
Выражение c.Value = переменная объекта или с переменной блока не указан
Я бы рад помочь.
Спасибо!
jmseiver
Обновление:
Этот код работает, спасибо Даррен!
With Sheets("DATASHEET").Range("AG1:BG53")
Set c = .Find("|", LookIn:=xlValues)
If Not c Is Nothing Then
Do
c.Value = ""
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.249977111117893
.PatternTintAndShade = 0
End With
Set c = .FindNext(c)
Loop While Not c Is Nothing
End If
End With
Этот код не делает:
With Sheets("DATASHEET").Range("AG1:BG53")
Set c = .Find("|", LookIn:=xlValues)
If Not c Is Nothing Then
Do
c.Value = ""
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.249977111117893
.PatternTintAndShade = 0
End With
Set c = .FindNext(c)
Loop While Not c Is Nothing
End If
End With
Изменение цвета ячейки цель подпрограммы. Дополнительный With-End With не работает.
Он не бомбит, он просто не меняет цвет ячеек.
?
Спасибо всем за их время!
jmseiver
Update 2:
Этот код работает!
'color any cell with updated data to gray
With Sheets("DATASHEET").Range("AG1:BG53")
Set c = .Find("|", LookIn:=xlValues)
If Not c Is Nothing Then
Do
c.Replace What:="|", Replacement:=""
c.Interior.ColorIndex = 15
Set c = .FindNext(c)
Loop While Not c Is Nothing
End If
End With
Таким образом, цель данного кода 1) найти все ячейки, в которых первый символ является кант символ «|», 2) удалить символ трубопровода «|», и 3) цвет сотовый серый.
Еще раз спасибо Даррен и Джон!
jmseiver
Вы можете использовать исходный код и удалить код, который имеет дело с 'firstAddress'. Код будет просто зацикливаться до тех пор, пока c не станет ничем, когда все '|' будут заменены. –
@ DarrenBartrup-Cook Хорошая точка. Я честно не обращал слишком много внимания на то, что пытался сделать код, но сосредоточился вместо этого на конкретной ошибке, с которой они столкнулись. Возможно, вы можете опубликовать ответ, который показывает, как можно упорядочить код. –
Все, действует следующий код: –