好吧,所以我正在为Reflection Workspace Terminal Emulator编辑一个宏。我有一个宏(它很长并且不一定相关,我可以发布完整的代码,如果有人想要,它是关于一个页面)
在宏观的最后,一个"早安"打印消息,然后打印名为myName
的字符串变量的值。这很好用。
然后我想要做的是使用For
循环打印一些控制字符(制表符),其数量等于Good Morning User
中打印的数量。这是我到目前为止的代码:
Dim X As Integer
For i = 1 To i = (13 + Len(myName)) 'Good Morning + a space character will always = 13
ibmCurrentScreen.SendKeys (ControlKeyCode_Tab)
Next i
End Sub
我会使用Chr()函数来打印控制字符,但似乎这个特定的程序使用ControlKeyCode_X
来打印它们。
答案 0 :(得分:2)
VBA中的For...Next
循环是一个简单的基于单变量计数器的循环,不能像其他语言一样具有复杂的标准或多个计数器(例如在C#for(int i = 0, int j = 10; i < 10; i++, j--)
中)。因此,在VBA中,i =
之后的To
是多余的,因为它不能是i
以外的任何内容。
因此,VBA中的“For”循环仅指定计数器一次。它应该是:
For i = startVal To endVal [step incrementVal]
...
Next [i]
To 10
将包含10作为最终值)计数器总是在每个循环结束时递增/递减,然后根据endVal
进行评估(即,对于一个循环的vanilla递增,退出循环后它将是endValue + 1)。
注意(与您的情况无关)您可以更改循环中i
的值,例如因某些特殊情况而增加两次。
使用Next
语句指定变量是可选的,对行为没有影响(任何嵌套循环必须始终在外循环之前关闭)但是当你有很多For ... Next时,这是一个很好的参考循环,以便明确Next接下来的循环(尽管你应该虔诚地缩进或以其他方式描绘你的代码)
所以在你的情况下For i = 1 To (13 + Len(myName))
代替。