1.2.2 词汇与语句——程序语言的基本要素
我们日常使用的语言是以“语句”为基本单位的,下面这段话就包括三个语句,分别用句号和问号隔开。
“我明天去上海。上海的天气怎么样?是否需要带一把雨伞?”
我们在理解上面这段话时,会先把它分解成三个语句,然后分析每个语句的含义。而对于其中的每一个语句,比如“我明天去上海”,还要进一步将它分解为“我”“明天”“去”和“上海”四个词汇,再对应到大脑中已有的概念和印象,才能得出这句话的正确含义。
同样的,VBA等程序语言也需要按照“语句”和“词汇”的模式进行表达,即一个程序由一条或多条语句构成,每条语句由一个或多个词汇构成。
1.VBA语句及其分隔符
与人类语言不同的是,VBA程序中的语句不是通过句号、问号等标点符号隔开的,而是通过“换行”来分隔的。也就是说,“代码”窗口中的每行代码代表一条语句,即每条程序语句必须写在同一行中[3]。
所以在图1.9所示的VBA程序示例中,“代码”窗口内一共有四条语句(四行代码)。第一条语句“Sub Demo()”和最后一条语句“End Sub”标识了程序的开始位置和结束位置,其内部的第二条和第三条语句则用来实现该程序的主要功能。
不过有的时候需要书写很长的语句,如果强行把它写在一行代码中,会严重影响美观和阅读效率。在这种情况下,我们可以使用空格与下画线将一条语句进行拆分,如图1.11所示。
图1.11 使用空格和下画线将代码拆写成两行
同时,VBA 也允许我们使用冒号“:”将多个短语句合并到一行代码中,从而节省空间,增强代码的可读性。具体用法如图1.12所示。
图1.12 使用冒号将多行代码合并
初学者需要特别注意的是:这里提到的所有符号,包括空格、冒号、下画线、圆括号等,必须使用英文半角格式,不能使用全角格式。虽然它们的外观十分相似,但完全是不一样的字符,不能混淆使用!这一点对于后面的章节同样适用,请格外注意。
2.VBA词汇及其分隔符
每一条VBA语句都是由一个或多个词汇构成的。比如Demo程序内部的第一条语句“Cells(2,3)=5”,可以初步分解为“Cells(2,3)”“=”“5”三个词汇[4]。在这三个词汇中,“=”也起到了分隔符的作用,使VBA能够正确地分隔辨识出每个词汇。
较常见的词汇分隔符是空格。比如在第一条语句的“Sub”和“Demo”之间及最后一条语句的“End”和“Sub”之间,都有一个空格作为分隔符。这种使用空格来区分不同单词的习惯,来自英语等表音文字。
如果在代码中不小心忘记了书写空格,最后一行语句就会变成“EndSub”。在这种情况下,计算机认为该语句只包含一个叫作“EndSub”的单词,而不会把它解读为“End”和“Sub”两个单词,因而无法将这一语句理解为“程序结束标志”,导致程序运行出错。