我理解您不喜欢“以行号开始行”的答案,但您不能与事实争论。这正是他们的意思。
VBA/VB6 的语法被设计为与 QuickBasic 的语法向后兼容,在此之前与 GW-Basic/MS-Basic 的语法向后兼容,其历史可以追溯到 1970 年代末甚至更早:最初的达特茅斯 BASIC 语言是创建于 60 年代。
在 MS-Basic 中,就像这个时代的所有其他 Basic 实现一样,添加到程序中的每一行都必须以电话号码。行号告诉基本解释器两件事:a)您正在存储该行(否则解释器将立即执行它),b)该行属于程序的哪个位置。为什么要做如此神秘的事情?因为当 Basic 被发明时,它的目的是交互式的,在一个唯一的交互形式是命令行提示符的世界里,在电传打字机上printing终端。
而且没有标签。
典型的基本会话可能如下所示,其中>
代表命令处理器提示符(这是虚构的,但与它的工作方式足够接近)。请记住:没有光标键或屏幕。您正在打字机上打字 - 使用一卷纸而不是屏幕 - 打字机也会通过在纸上打印来回应您!:
Welcome to B.A.S.I.C.
Ok <--- Ok told you the interpreter was ready
>LIST <--- print the program
Ok <--- No program, so nothing to list.
>PRINT 2 + 7 <--- No line number, so execute immediately
9 <--- The command executes
Ok
>30 PRINT 2 + 7 <--- Line number, so store the command in position 30
Ok
>10 I = 42 <--- Line number, so store in line 10
Ok
>20 PRINT I + 12 <--- Store on line 20, so insert between 10 and 30
Ok
>LIST <--- Print the program so far
10 I = 42
20 PRINT I + 12
30 PRINT 2 + 7
Ok
>RUN <--- Execute the stored program now
54 <--- line 10 has no output. Line 20 outputs this
9 <--- line 30 outputs this
Ok <--- Done running the program
>20 <--- an empty line number: it means delete the line
Ok
>LIST
10 I = 42
30 PRINT 2 + 7 <--- line 20 is gone!
原始?也许吧,但你必须从某个地方开始。
那时的你always通过提供您希望代码跳转到的行号来使用 GOTO。这就是它的运作方式。例如:
10 PRINT "Testing, "
20 I = 1
30 PRINT I; ","
40 IF I >= 3 THEN 60
50 GOTO 30
60 END
QuickBasic 是 Microsoft 发布的 Basic 的增强版本,它支持选择性地将程序编译为可执行文件,而不是在解释器中交互运行。除其他增强功能外,它还添加了以下两个功能:
因为它使用功能齐全的 GUI 文本编辑器全屏运行,所以不需要行号来指定每个新行的位置;您只需移动光标并输入:传统的行号现在是可选的。事实上,他们感到气馁,因为在功能齐全的编辑器中,他们只是碍事。但他们不能直接删除它们,因为它们对于 BASIC 兼容性至关重要,因此它们仍然受到支持。即使在 VBA 中,它们仍然如此。
由于他们不希望您使用行号,因此他们需要替代需要行号作为目标的命令,例如GOTO
. 现在您可以放置线路文字标签可以用作 GOTO 等的目标。
因此,您可以看到行号不仅仅是“由数字组成的行标签”。它们实际上是一种替代语法,为了与旧版本的语言兼容而保留。
就是这样。帮助文件只是告诉您有关 GOTO 的“现代”语法(带有文本标签),并且 - 如果您really想要 - 您仍然可以使用带有行号的旧语法和 20 世纪 60 年代中期发明的旧 GOTO 语法。