计算循环并报告当前迭代

时间:2015-05-07 17:41:59

标签: vba ms-word word-vba

因此,我正在制作的Word宏会弹出一个用户表单,您输入的数量为x(x中的1个),并根据输入的数量复制一行。复制粘贴工作正常,但我需要根据数量报告复制的编号。因此,例如,如果输入4,那么将创建四行,表示“1 of 1”,“1 of 2”,“1 of 3”和“1 of 4”而不是所有四个说“1 of x” “当他们都被复制粘贴时。基本上,x = n + 1。我正在做一个循环,但我不能让它出来。它会说1,1,1和3.我试图弄清楚它是如何执行来修复它的,所以任何关于这个循环如何运行的见解都会很棒!谢谢!

Dim i As Integer
Dim tbl As Table
Set tbl = ActiveDocument.Tables(1)

For i = 0 To Labels2.TextBox3.Value
tbl.Rows(1).Range.Copy
tbl.Rows(2).Range.Paste
i = i + 1

Set myrange = ActiveDocument.Content
myrange.Find.Execute FindText:="1 of " & Labels2.TextBox3.Value, Forward:=True
If myrange.Find.Found = True Then myrange.Text = "1 of " & i

Next i

1 个答案:

答案 0 :(得分:0)

我认为你的问题在于你在for循环中迭代i已经迭代i如果Label2.TextBox3.value为4那么你的循环只会运行由于您的i = i + 1行而导致3次。我并不完全遵循你的逻辑,但试试这个

Sub test()
    Dim i As Long
    Dim tbl As Table
    Set tbl = ActiveDocument.Tables(1)

    For i = 1 To Labels2.TextBox3.Value
        tbl.Rows(1).Range.Copy
        tbl.Rows(2).Range.Paste

        Set myrange = ActiveDocument.Content
        myrange.Find.Execute FindText:="1 of " & Labels2.TextBox3.Value, Forward:=True
        If myrange.Find.Found = True Then myrange.Text = "1 of " & i

    Next i
End Sub