Excel VBA程序:替换表格中的空格有效,但为什么?

Excel VBA程序:替换表格中的空格有效,但为什么?,excel,vba,Excel,Vba,我已经引用了这个网站来回答我的许多问题,但这是一个我找不到答案的网站 Public Sub RemoveBlanks() Dim Table As ListObject Set Table = Worksheets("Sheet1").ListObjects("ExampleTable") Dim r As Range With Table.DataBodyRange For Each r In Table.DataBodyRange If r.Value = "" T

我已经引用了这个网站来回答我的许多问题,但这是一个我找不到答案的网站

Public Sub RemoveBlanks()
Dim Table As ListObject
Set Table = Worksheets("Sheet1").ListObjects("ExampleTable")
Dim r As Range

With Table.DataBodyRange
    For Each r In Table.DataBodyRange
        If r.Value = "" Then r.Value = "-"
    Next r

End With

End Sub
这是我使用的代码(将变量/工作表名称更改为generic,以便于对话)

声明变量
Dim r As范围
但永远不要设置引用或定义r是什么。 那么这部分是如何工作的呢?我认为必须为每个变量指定一个值或引用,以便VBA知道如何处理它

For Each r In Table.DataBodyRange
        If r.Value = "" Then r.Value = "-"
    Next r 
我在寻找原因

这是我的第一篇帖子,我对谷歌一直是我的朋友的编程/编码业务非常熟悉。我正在寻找更多的理论,而不是旧的复制/粘贴代码,进行一些名称更改,然后祈祷

如果格式化不完美,我会选择。
我很高兴澄清我的问题是否有道理

为每个r
执行赋值-将
DatabodyRange
中的每个单元格顺序赋值给
r
FYI您的
With
块在这里不做任何事情。
为每个r in.
位将
r
变量设置为表中的单元格,一次一个单元格。您可能会想到类似i=1到10的
,它的工作原理与每个
略有不同
谢谢大家的快速回复。是的,我的目标是让它查看表中的每个单元格。谢天谢地,我在这里找到了代码,我只是不明白r是如何定义为每个单元格的@Timty作为参考!对于表中的每个r,我可能会将其写为
。DataBodyRange.Cells
更明确地说明代码在做什么
对于每个r
是执行赋值的-DataBodyRange
中的每个单元格都被顺序地赋值给
r
FYI每个r In…
位将
r
变量设置为表中的单元格,一次一个单元格。您可能会想到类似于
for i=1到10
的方法,对于每个
来说,它的工作原理与
稍有不同,谢谢各位的快速回复。是的,我的目标是让它查看表中的每个单元格。谢天谢地,我在这里找到了代码,我只是不明白r是如何定义为每个单元格的@Timty作为参考!我可能会为Table.DataBodyRange.Cells中的每个r编写
,以便更明确地说明代码在做什么