我创建了一个简单到荒谬的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
因此,我收到不支持属性或方法的消息。
谢谢!
大卫
答案 0 :(得分:2)
"为什么突然间范围物体的一部分突然不在范围内?"那不是问题。错误是Object doesn't support this property or method
。这意味着(基本上).
之后的任何内容都是一个对象,因此错误告诉您某些内容与您使用.Character
的方式有关。< / p>
我做了一些快速搜索,这有效:
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 :(得分:1)
我发现了两件事。 1.字符不是一个集合,因此For Each不起作用。 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
希望有所帮助