如何在 VBA 中进行原位增量?

How to do in place increments in VBA?

我正在尝试在 Word 中使用 VBA for 循环遍历 table 的行。该列常量并设置为 table 的第四列。如果给定行中的特定单元格具有文本“是”,我想将 1 添加到 X,我在代码开头将其初始化为 0。我的代码不进行递增,而是不断返回零或我将 X 初始化为的任何其他值。下面附上我当前的 VBA 代码。

Sub Row_Iter()

Dim otable As Table
Set otable = ActiveDocument.Tables(1)
Dim Row As Integer
Dim Col As Integer
Col = 4
Dim x As Integer

''Section 1

With otable.Columns(Col)
    x = 0
    For Row = 4 To Row = 7
        If otable.Cell(Row, Col).Range.Text = "Yes" Then
                x = x + 1
        End If
    Next Row
End With

结束子

你的代码有两个问题。

首先是For Row = 4 To Row = 7应该是For Row = 4 To 7

第二个是 If otable.Cells(Row, Col).Range.Text = "Yes" 永远不会计算为 True。这是因为每个单元格都包含一个 non-printing 单元格结尾标记,它由两个字符组成。通过检查立即 window 中空单元格的长度,您可以很清楚地看到这一点,例如

?len(ActiveDocument.Tables(1).Cell(1,1).Range.Text)

所以,您的代码应该是:

Sub Row_Iter()

Dim otable As Table
Set otable = ActiveDocument.Tables(1)
Dim Row As Integer
Dim Col As Integer
Col = 4
Dim x As Integer

    x = 0
    For Row = 4 To 7
        If left(otable.Cell(Row, Col).Range.Text, 3) = "Yes" Then
            x = x + 1
        End If
    Next Row

End Sub