如何在 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
我正在尝试在 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