excelvba。对于范围中的每一行,对于行中的每一个单元格,对于单元格中的每一个字符
我创建了一个简单到荒谬的VBA宏 针对范围中的每一行,然后针对行中的每个单元格,然后针对单元格中的每个字符 但它返回不支持的属性或方法 现在,要引用Excel VBA中单元格中的每个字符,必须将其定义为一个范围。那么,一个范围内的行中的单元格怎么不是一个范围对象呢 在所有Excel示例中,“带字符的单元格”属性都在绝对值中引用。类似于excelvba。对于范围中的每一行,对于行中的每一个单元格,对于单元格中的每一个字符,vba,excel,Vba,Excel,我创建了一个简单到荒谬的VBA宏 针对范围中的每一行,然后针对行中的每个单元格,然后针对单元格中的每个字符 但它返回不支持的属性或方法 现在,要引用Excel VBA中单元格中的每个字符,必须将其定义为一个范围。那么,一个范围内的行中的单元格怎么不是一个范围对象呢 在所有Excel示例中,“带字符的单元格”属性都在绝对值中引用。类似于工作表(“表1”)。范围(“A1”) 我必须写一个代码吗 工作表(“MySheet”).范围(“B1”) ... 工作表(“MySheet”).范围(“B2”) .
工作表(“表1”)。范围(“A1”)
我必须写一个代码吗
工作表(“MySheet”).范围(“B1”)
...
工作表(“MySheet”).范围(“B2”)
...
...
工作表(“MySheet”).范围(“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
结果,我得到一条消息,表示不支持属性或方法
谢谢大家!
David“为什么范围对象的一部分突然变成了范围?”这不是问题所在。错误是对象不支持此属性或方法
。这意味着(基本上)在
之后的任何内容都是一个对象,因此错误是告诉您使用.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
的答案。问题在于.Characters
如何与范围一起使用-不需要复杂的技能或知识。只需使用VB错误消息。我注意到两件事。1.字符不是集合,因此对于每个字符都不起作用。2.下划线不是布尔值。尝试以下方法:
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
子单元测试()
尺寸rw为Excel.Range
将单元格设置为Excel.Range
将字符设置为Excel.Characters
我想我会坚持多久
表格(“工作清单”)范围(“B1:D250”)行中的每个rw
对于rw.单元格中的每个单元格
对于I=1到cel.Characters.Count
Set char=cel.Characters(I,1)
如果为char.Font.Underline xlUnderlineStyleNone,则为MsgBox char.Text
接下来我
下一个
下一个
设置rw=Nothing
设置cel=Nothing
Set char=Nothing
端接头
希望这对您有所帮助,这最终导致无法获取Characters类的Count属性。顺便问一下,下划线怎么不是布尔值?请参阅Excel VBA帮助示例:使用工作表(“Sheet1”).Range(“A1”).Value=“abcdefg”。字符(3,1)。Font.Bold=True结尾WithI能够重现字符。当cel使用公式而不是文字时,您描述的计数问题。当单元格有一个公式时,你能得到一个字符一个字符的下划线吗?我的经验是否定的,但如果你知道我想学什么。我的代码针对文本运行,所以您可以添加一个测试:IF cel.HasFormula THEN。。。Font.Underline是一个枚举,具有不同的值,对应于单下划线、双下划线、无下划线等。如果你阅读我的帖子,你会看到我引用了Characters对象文档,因为它引用了用绝对值定义的单元格对象。你没有回复我的这部分信息,因此你的语气傲慢。啊,我忘了重置范围。再次检查代码,我将工作表名称和范围放回到原来的位置。这对我来说没有问题,这是一个问题,这不是问题。我发现了它,自己修好了。你的代码可以工作。至少当你用F8迭代的时候。但当它到达带下划线的字符时,它确实会停止。我会再检查一遍。谢谢你的意见。你可以在我的网站上读到我的整个交易:我想要的是在网站上添加下划线文本,而不仅仅是过滤掉邮政编码。我不确定你是否知道如何操作,正如你指出的,这是一个超级简单的代码,可以显示你的问题,但你可以将带有下划线的字符放入文本文档、Excel单元格、数组中,等等,而不是只是有一个消息框提示什么字符是下划线。