[英]Excel VBA. For each row in range, for each cell in row, for each character in cell
我創建了一個很簡單的VBA宏。
對於范圍中的每一行,然后是該行中的每個單元格,然后是該單元格中的每個字符。
但是它返回不支持的屬性或方法。
現在,要在Excel VBA中引用單元格中的每個字符,必須將其定義為范圍。 那么,范圍內的行中的單元格不是范圍對象又如何呢?
在所有Excel示例中,具有Characters屬性的單元格均以絕對值引用。 像Worksheets("Sheet1").Range("A1")
我是否必須編寫Worksheets("MySheet").Range("B1")
... Worksheets("MySheet").Range("B2")
... ... Worksheets("MySheet").Range("B250")
要訪問字符,或者是否可以在沒有Mid函數的情況下訪問單元格中的每個字符?
順便說一句,Mid函數失去了格式設置,但是我正在尋找帶下划線的字符。
我的程序是這樣的
Sub Celltest()
For Each rw In Sheets("Joblist").Range("B1:D250").Rows
For Each cel In rw.Cells
For Each char In cel.Characters
If char.Font.Underline = True Then MsgBox char
Next
Next
Next
End Sub
結果是我收到一條消息,提示不支持屬性或方法。
謝謝!
大衛
“為什么突然突然成為范圍對象的一部分而不是范圍?” 那不是問題。 錯誤是Object doesn't support this property or method
。 這意味着(基本上)之后的所有內容.
是一個對象,因此錯誤是告訴你, 什么是與您是如何使用.Character
。
我做了一些快速搜索,這可行:
Sub Celltest2()
Dim rw As Range, cel As Range
Dim i As Integer
Dim char
For Each rw In Sheets("Joblist").Range("B1:D250").Rows
For Each cel In rw.Cells
For i = 1 To Len(cel)
'Debug.Print cel.Characters(i, 1).Text
If cel.Characters(i, 1).Font.Underline = 2 Then
MsgBox (cel.Characters(i, 1).Text)
End If
Next i
Next
Next
End Sub
我只是查看了Characters Object文檔,並找到了如何使用.Characters
的答案。 問題是如何將.Characters
與范圍一起使用-不需要復雜的技能或知識。 只需使用VB錯誤消息。
我注意到了兩件事。 1.字符不是集合,因此對於每個都不起作用。 2. Font.Underline不是布爾值。 嘗試類似:
Sub Celltest()
Dim rw As Excel.Range
Dim cel As Excel.Range
Dim char As Excel.Characters
Dim I As Long
For Each rw In Sheets("Joblist").Range("B1:D250").Rows
For Each cel In rw.Cells
For I = 1 To cel.Characters.Count
Set char = cel.Characters(I, 1)
If char.Font.Underline <> xlUnderlineStyleNone Then MsgBox char.Text
Next I
Next
Next
Set rw = Nothing
Set cel = Nothing
Set char = Nothing
End Sub
希望能有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.