Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excelvba。对于范围中的每一行,对于行中的每一个单元格,对于单元格中的每一个字符_Vba_Excel - Fatal编程技术网

excelvba。对于范围中的每一行,对于行中的每一个单元格,对于单元格中的每一个字符

excelvba。对于范围中的每一行,对于行中的每一个单元格,对于单元格中的每一个字符,vba,excel,Vba,Excel,我创建了一个简单到荒谬的VBA宏 针对范围中的每一行,然后针对行中的每个单元格,然后针对单元格中的每个字符 但它返回不支持的属性或方法 现在,要引用Excel VBA中单元格中的每个字符,必须将其定义为一个范围。那么,一个范围内的行中的单元格怎么不是一个范围对象呢 在所有Excel示例中,“带字符的单元格”属性都在绝对值中引用。类似于工作表(“表1”)。范围(“A1”) 我必须写一个代码吗 工作表(“MySheet”).范围(“B1”) ... 工作表(“MySheet”).范围(“B2”) .

我创建了一个简单到荒谬的VBA宏

针对范围中的每一行,然后针对行中的每个单元格,然后针对单元格中的每个字符

但它返回不支持的属性或方法

现在,要引用Excel VBA中单元格中的每个字符,必须将其定义为一个范围。那么,一个范围内的行中的单元格怎么不是一个范围对象呢

在所有Excel示例中,“带字符的单元格”属性都在绝对值中引用。类似于
工作表(“表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单元格、数组中,等等,而不是只是有一个消息框提示什么字符是下划线。