我想使用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」: 對象變量或With塊變量未設置
的代碼失敗在這裏:
循環而不是C一無所有,c.Address <> firstAddress
碰撞後,我的調試手錶具有以下值:
表達firstAddress" = $AG$37
(這是在被合併,併爲中心的範圍內的第一小區 - 一個要求)
表達式c.Address =對象變量或帶塊變量未設置
表達式c.Value =對象變量或With塊變量未設置
我將不勝感激任何幫助。
謝謝!
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
更新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)着色細胞灰色。
再次感謝Darren和約翰!
jmseiver
你可以使用原來的代碼,並刪除與'firstAddress'交易的代碼。代碼將循環,直到所有'|'都被替換後c爲止。 –
@ DarrenBartrup庫克好一點。老實說,我並沒有過多地關注到了代碼試圖做的,而是集中在他們跑進了特定的錯誤。也許你可以發表一個答案,說明如何簡化代碼。 –
所有,下面的代碼工作: –