VBA 中转到 <行号>

2024-01-20

来自 VBA 帮助文件:

转到语句

无条件分支到过程中的指定行。

Syntax

GoTo _line_

所需line参数可以是任何行标签或行号。

Remarks

GoTo只能分支到它出现的过程中的行。

我的问题是,如何使用跳转到行号GoTo? (我知道如何跳转到标签。)

(注:我问这个是出于好奇。我无意实际使用GoTo这边走。)


我理解您不喜欢“以行号开始行”的答案,但您不能与事实争论。这正是他们的意思。

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 语法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VBA 中转到 <行号> 的相关文章

随机推荐