用于循环打印控制字符

时间:2014-04-17 16:15:51

标签: vba

好吧,所以我正在为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来打印它们。

1 个答案:

答案 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]
  • i =变量变化
  • startVal =起始值
  • endVal =结束值(包括在内,即To 10将包含10作为最终值)
  • incrementVal =每个循环递增/递减的可选值 (默认= 1)

计数器总是在每个循环结束时递增/递减,然后根据endVal进行评估(即,对于一个循环的vanilla递增,退出循环后它将是endValue + 1)。

注意(与您的情况无关)您可以更改循环中i的值,例如因某些特殊情况而增加两次。

使用Next语句指定变量是可选的,对行为没有影响(任何嵌套循环必须始终在外循环之前关闭)但是当你有很多For ... Next时,这是一个很好的参考循环,以便明确Ne​​xt接下来的循环(尽管你应该虔诚地缩进或以其他方式描绘你的代码)

所以在你的情况下For i = 1 To (13 + Len(myName))代替。