简介:《Visual Basic编程基础教程》面向编程初学者与办公自动化学习者,是一份VBA入门读物,帮助读者跨越从基础概念到编写小型交互程序的门槛。资源以PDF单文件打包,压缩包约2.17MB,共1个PDF文档,便携易读,适合电脑端对照练习。内容从语言与翻译器、集成开发环境讲起,覆盖图形界面构建、变量与数值类型、数值表达式及类型转换、MsgBox与InputBox输入输出、If条件分支、字符串处理、for和while循环、数组与矩阵、文件读写等知识点,并配有实例操作和章节练习,便于按目录循序渐进地建立语法框架与上机能力。目前已有112人学习,适合零基础自学者、VBA宏初学者及需要补强语法和实验环节的读者作为入门教材或课程配套阅读材料。
1. 先把话说明白:Visual Basic 到底是什么
很多人第一次听到 Visual Basic(简称 VB)和它的搭档 VBA,脑子里浮现的是一堆看不懂的英文和符号,本能觉得这是科班出身的人才碰的东西。换个说法就好懂了:VB 是一种专门用来「给电脑下指令」的语言,而 VBA 是它寄居在日常办公软件里的那一个版本——你每天打开的那份表格、那份文档,背后都藏着一个能听懂指令的小助手,只是你从来没叫过它。这份《Visual Basic 编程基础教程》干的正是这件事:带你在集成开发环境里写下第一行代码,认识变量和数值类型,用条件判断和循环语句让程序自己干活。它适合完全没写过代码、但每天都要和表格文档打交道的人。
2. 为什么零基础也值得学:算一笔时间账,再看路怎么走
在动手之前,先把「值不值得」这件事想清楚,比急着敲代码重要得多。新手最容易犯的错,是被人一句「学编程很难」吓退,或者反过来,一头扎进代码里,三天没看见效果就放弃。这两种结果,本质上都是因为没搞清楚这门语言到底在什么位置、能替你做哪一段活。
VBA 的定位非常朴素:它不负责开发独立的商业软件,也不追求性能极限,它就是贴在办公软件身上的一个自动化开关。你平时手动做一遍要十分钟的事,写成一段二十行的代码,以后每次点一下,两秒钟跑完。这个落差,就是零基础的人学它最大的动力来源。
2.1 三个最典型的场景,看看有没有你的份
第一个场景是月底的报表整理。某公司的行政岗每个月要把十几个部门的表格收上来,格式各不相同,有的多一列空行,有的日期写法不统一,全靠肉眼找、手工改,一个下午就耗进去了。这类活的特点是规则明确、重复度高、容错要求还不低,正是 VBA 最擅长的地盘。
第二个场景是批量改名、批量生成文档。A同学做过一次实习,要把两百多份文档按统一规则重命名,并且每份开头都要填上对应的编号和日期。手工做,做五十份就开始眼花,做到第一百份必然出错。写成循环,两百份和两千份的工作量几乎没有区别。
第三个场景是数据的核对与汇总。把几份表格里同一列的数据比对一遍,找出不一致的行,这件事人做起来枯燥、容易走神,机器做起来却稳得像钟表。这三个场景你只要中了一个,学 VBA 的时间投入基本都能在头两个月里赚回来。
2.2 学之前需要什么基础:一台电脑,会用表格就够
我经常被问「数学不好能不能学」「英语差是不是没戏」。实话讲,入门阶段需要的数学就是加减乘除和比较大小,需要的英语就是认识 Dim、If、For 这几个词,而且 IDE 会帮你自动补全、自动纠错,拼错了当场就有提示。真正的门槛不在知识,而在耐心——愿不愿意把一个例子亲手敲三遍。
反过来说,有一样东西是必须提前建立的:对「顺序执行」这件事的直觉。程序从上往下一行一行跑,跑到判断就分岔,跑到循环就回头,这个模型建立不起来,后面学什么都是玄学。所以第一个实验不要贪多,就让它弹一个框出来,先亲眼确认「我写的字真的变成结果了」。
2.3 环境在哪:三步就能摸到它
很多人卡在第一步,不是因为不会写代码,而是压根没找到入口。大致路径是:打开你常用的那个办公软件,在顶部菜单栏里找带「开发」字样的选项卡;如果没看到,去选项设置里把对应的功能区勾上;点进去之后,找到「编辑器」或「查看代码」的按钮,一个灰底白字的窗口就会弹出来。
这个窗口就是接下来所有练习的主战场。第一次看到它可能会有点慌,左边一堆树状目录,右边一片空白,中间还可能有属性列表。不用急着全部搞懂,第 3 章会把每个区域的作用挨个讲一遍。先确认你能把它打开、能关掉、能再打开,这三件事做到了,环境这一关就算过了。
提示:不同版本的办公软件,菜单名字会有细微差别,但「开发」这个入口一直都在。找不到的时候,别在选项里乱翻,先搜一下当前版本对应的位置说明,两分钟就能定位。
2.4 六步路线图:照着走,别跳步
这份教程的内容是按依赖关系排的,跳步会很难受。顺序大致是这样:先认识集成开发环境和图形界面的构成,再跑通第一个输出实验;接着学变量和数值类型,搞清楚数据怎么存;然后是键盘输入和屏幕输出,让程序能和人对话;再往下是条件执行和字符串处理,让程序能判断、能处理文字;之后是循环语句、数组和矩阵,处理成批的数据;最后是文件读写和函数子程序,让结果能保存、代码能复用。
入门阶段最容易犯的急躁病,是看到「数组」觉得简单就跳过,直接去啃文件操作,结果写到一半发现数据根本存不住。我第一次学的时候也干过这种事,后面回头补基础,反而多花了一倍时间。所以哪怕某一章看着眼熟,也建议照着敲一遍,手指的记忆比眼睛可靠。
3. 第一个实验:认全集成开发环境,让三行代码弹出窗口
到这一章,真正的动手开始了。整个流程拆成四小步:认清窗口、跑通输出、学会存数据、完成一次输入输出对话。每一步都有可以照着敲的代码,敲完就能看到结果,不用等到最后才验证。
3.1 集成开发环境:三个区域各管什么
那个灰底窗口看着复杂,其实只需要先认三块地方。左上角一般是工程资源管理器,用树状结构列出当前文件里所有的代码模块和窗体,相当于一本书的目录,你想跳到哪里写代码,先在这里找到对应条目。中间最大的一块是代码编辑区,你写的每一行都落在这里,它自带语法高亮,关键字会变色,注释是另一种颜色。右下角通常是属性窗口,选中一个按钮或者输入框,这里就能改它的名字、显示的文字、大小和位置。
新手最常见的误解,是以为代码写在哪儿都一样。实际上代码必须写在「模块」或「窗体」里,写在别的地方根本不会被执行。判别方法很简单:写完一个过程后,光标停在过程内部,按下运行键能跑起来,说明位置对了;按了没反应或者弹出一堆看不懂的提示,八成是写错了地方。
集成开发环境还提供了两个对新手极其友好的功能:一个是自动列出成员,你打一个点,它会弹出可选项;另一个是语法检查,某些明显的错误在你还没运行时就会标红。这两个功能相当于随身带了个助教,别浪费。
3.2 第一个实验:一行代码弹出一个窗口
打开代码编辑区,把下面这几行原样敲进去。注意大小写不用管,编辑器会自动帮你规范。
Sub HelloWorld() ' 最简单的屏幕输出:弹出一个对话框,内容固定 MsgBox "你好,这是我写的第一行 VBA 代码" End SubSub和End Sub是一对,中间夹着的就是这个过程的全部内容,可以理解成「一段有名字的指令包」。HelloWorld是这段指令包的名字,你自己起,改天想再跑一遍,叫这个名字就行。MsgBox是一条指令,作用是弹出一个对话框,后面引号里的内容就是框里显示的文字。引号必须是英文半角,中文引号会让整行报错,这是新手翻车率最高的地方之一。
跑起来的方式有两种:光标停在Sub和End Sub之间,按运行快捷键;或者在菜单里找到运行按钮点一下。屏幕上会跳出一个带「确定」按钮的小框。看到它,说明你已经完成了从「写」到「执行」的完整闭环。
接着做个小改动,让对话框带上标题和指定的按钮样式:
Sub HelloWithTitle() ' 第一个参数是正文,第二个参数决定按钮形式,第三个参数是对话框标题 MsgBox "准备好了就开始吧", vbOKOnly, "第一课" End Sub三个参数用逗号隔开。第一个是必填的正文;第二个vbOKOnly表示只显示一个确定按钮,改成别的常量会出现「是/否」这类组合;第三个是标题栏文字。参数不用背,打一个逗号,编辑器就会提示有哪些可选值,边试边看效果,比看文档快得多。
3.3 变量:给数据准备一个贴了标签的盒子
程序要处理数据,就得先有地方放数据,这个「地方」就是变量。把它想成一个盒子:盒子上贴着名字,盒子里装着某一类东西,盒子的大小取决于你声明的类型。
Sub UseVariable() Dim name As String ' 声明一个装文字的盒子 Dim age As Integer ' 声明一个装整数的盒子 name = "A同学" age = 18 MsgBox name & "今年" & age & "岁" End SubDim是声明变量的关键字,As后面跟类型。String装文字,Integer装整数,装小数的用Double,装「是/否」两种状态的用Boolean。赋值用等号,注意这里的等号是「把右边放进左边」,不是数学上的相等。&是连接符,把文字和变量拼成一整句。
为什么不干脆全部用String?因为类型决定了能做哪些运算。两个String用&拼起来是文字拼接,两个数字类型用+才是加法。如果声明错了类型,后面算出来的结果会很离谱,而且这种错误往往不报错,只是答案不对,属于最难查的一类问题。
注意:变量名不要用
Sub、If、End这类关键字,也不要和已有的过程重名。中文变量名在编辑器里能跑,但入门阶段建议统一用英文,避免输入法切换带来的隐藏字符问题。
3.4 InputBox 收数据,MsgBox 发结果:第一个对话程序
只会输出不算交互,让程序能拿到你输入的内容,才叫对话。负责收数据的是InputBox。
Sub AskName() Dim name As String ' InputBox 把用户输入的内容当成文字返回,赋给左边的变量 name = InputBox("请输入你的名字:", "输入框示例") MsgBox "你好," & name & ",欢迎开始学 VBA" End SubInputBox的第一个参数是提示语,第二个参数是窗口标题。它返回的永远是一段文字,哪怕你输的是数字,拿到的也是文字形态的「18」而不是数字 18。这个细节在下一段代码里会变成关键。
Sub CalcTotal() Dim price As Double Dim qty As Integer Dim total As Double ' InputBox 返回的是文字,参与数学运算前必须转成数字 price = CDbl(InputBox("单价是多少?", "输入单价")) qty = CInt(InputBox("买几件?", "输入数量")) total = price * qty MsgBox "总价是:" & total & " 元" End SubCDbl把文字转成带小数的数字,CInt转成整数,这两个叫类型转换函数。少了它们,程序会直接抛出「类型不匹配」的运行时错误——这是新手遇到的第一类报错,几乎人人都经历过。转换函数不是万能的,如果用户输入的是「abc」,转换同样会失败,所以等到第 4 章学完条件判断,就可以先检查输入是不是数字,再决定要不要转。
3.5 字符串函数:Len、Left、Mid、InStr 够用一大半
文字处理在办公场景里出现频率极高,教程里列了一整串字符串函数,入门阶段真正需要先掌握的只有四个。
Sub SplitName() Dim fullName As String fullName = InputBox("请输入你的全名:", "字符串练习") ' Len 数长度,Left 从左边取,Right 从右边取 MsgBox "一共 " & Len(fullName) & " 个字" & vbCrLf & _ "前两个字是:" & Left(fullName, 2) & vbCrLf & _ "后两个字是:" & Right(fullName, 2) End SubLen返回字符个数;Left(文本, n)取左边 n 个字符;Right(文本, n)取右边 n 个;Mid(文本, 起始位置, n)从中间某个位置开始取 n 个。还有一个InStr(文本, 要找的内容),返回目标第一次出现的位置,找不到就返回 0,常用来判断一段文字里有没有某个关键词。
代码里的vbCrLf是换行符,用来把多行内容拼进同一个对话框;行末的下划线_是续行符,表示这一行还没写完,下一行接着来,纯粹是为了让长代码看起来整齐,删掉也不会影响逻辑,但必须保证断行位置不在引号中间。
这四个函数组合起来,已经能解决大部分「从一段文字里抠出需要的信息」的问题。第一次学的时候,建议拿自己的名字、邮箱、文件名各试一遍,看输出对不对,比看十页说明管用。
4. 让程序自己动脑:条件判断、循环语句、数组和文件
上一章的代码是一条道走到黑:输入、计算、输出,中间不做任何选择。真实场景没这么乖,数据有对有错,数量有多有少,还得存下来下次接着用。这一章补的就是这几块能力,学完你就能写出真正意义上的小工具。
4.1 If-Then:让程序在岔路口自己选
条件判断的写法几乎和日常说话一样:如果……就……否则……。
Sub CheckScore() Dim score As Integer score = CInt(InputBox("输入分数(0-100):", "成绩判断")) If score >= 90 Then MsgBox "优秀" ElseIf score >= 60 Then MsgBox "及格" Else MsgBox "不及格" End IfIf后面跟条件,Then后面跟满足时执行的语句,ElseIf处理第二种情况,Else兜底,最后必须用End If收尾。判断顺序是从上往下,一旦某个条件成立,后面的分支就不再检查,所以条件的排列顺序会影响结果。上面这段如果把>= 60放在最前面,90 分也会被判成及格,这是逻辑错误里最常见的一种,程序不报错,答案却是错的。
条件里可以用的比较符号有>、<、>=、<=、=、<>,其中<>表示不等于。多个条件可以用And、Or、Not连接,And要求两边都成立,Or只要一边成立。入门阶段少用嵌套,三层以上的If套If,过两天自己都看不懂。
4.2 Select Case:选项一多就别堆 If
当判断依据是同一个变量、而分支有五六种时,一长串ElseIf会变得很难读,这时候换Select Case。
Sub HandleLevel() Dim level As String level = UCase(InputBox("输入等级 A / B / C:", "等级处理")) Select Case level Case "A" MsgBox "对应 90 分以上" Case "B" MsgBox "对应 60 到 89 分" Case "C" MsgBox "对应 60 分以下" Case Else MsgBox "输入不在预期范围内" End Select End SubUCase把输入转成大写,这样用户输小写 a 也能匹配上,属于提高容错的小技巧。Case Else是可选的兜底分支,建议都写上,用来提示「输入不合法」,否则用户输错时程序毫无反应,体验很差。
Select Case还支持范围写法,比如Case 1 To 10和Case Is > 100,处理区间判断时比If清爽。判断依据必须是同一个表达式,如果需要同时看两个变量,还是得回到If。
4.3 For-Next:次数确定的重复活交给它
循环是编程里回报最高的一个结构。你先想清楚「这件事要做几遍」,然后告诉程序。
Sub SumToHundred() Dim i As Integer Dim total As Long total = 0 For i = 1 To 100 total = total + i Next i MsgBox "1 加到 100 的结果是:" & total End SubFor i = 1 To 100表示从 1 数到 100,每数一次执行一遍中间的语句,Next i负责把 i 加一并在没到 100 时跳回开头。变量total必须在循环之前赋初值 0,否则它是个空值,加出来的结果不对——这个坑极其常见。
循环还能指定步长,写法是For i = 10 To 1 Step -1,用于倒着数。也可以配合Exit For提前跳出,但当你想「提前跳出」的时候,往往说明该用Do-Loop了。
提示:循环变量 i 不要在循环体里手动改。它的值由
Next负责推进,你在里面改,会让循环次数变得不可预测,严重时直接卡死。
4.4 Do-Loop:不知道跑几次时用它
有些场景事先算不出要循环多少轮,比如让用户反复输入,直到猜对为止。
Sub GuessNumber() Dim answer As Integer Dim guess As Integer Dim count As Integer answer = 42 count = 0 Do guess = CInt(InputBox("猜一个 1 到 100 的数字:", "猜数字")) count = count + 1 If guess < answer Then MsgBox "小了" ElseIf guess > answer Then MsgBox "大了" End If Loop Until guess = answer MsgBox "猜对了,一共猜了 " & count & " 次" End SubDo开头、Loop Until 条件收尾,表示「先做一遍,再检查条件,条件成立就停」。另一种写法是Do While 条件配Loop,先检查再执行。两者的区别只在「至少执行一次」还是「可能一次都不执行」,入门阶段记住这一条就够。
这里必须有一个能让条件变化的语句,本段里是用户的输入。如果条件永远不满足,程序就会陷在循环里出不来,也就是常说的死循环,界面直接卡住,只能强行中断。写Do-Loop的时候,我养成的习惯是先问自己一句:哪一行代码会让这个条件迟早成立?
4.5 数组与矩阵:一次装一批数据
处理五个数据,声明五个变量还能忍;处理五百个,就必须用数组。数组是「一排编了号的盒子」,用同一个名字加下标来区分。
Sub AverageScore() Dim scores(1 To 5) As Integer Dim i As Integer Dim total As Integer For i = 1 To 5 scores(i) = CInt(InputBox("输入第 " & i & " 个成绩:", "批量输入")) Next i total = 0 For i = 1 To 5 total = total + scores(i) Next i MsgBox "平均分是:" & total / 5 End SubDim scores(1 To 5) As Integer声明了五个格子,下标从 1 到 5。入门的习惯是「输入一轮、处理一轮」,分成两个循环,比塞进一个循环更容易看懂。数组和循环几乎是绑定的,只要看到数组,基本都要配一个For来遍历。
二维数组就是教程里说的矩阵,声明成Dim grid(1 To 3, 1 To 4) As Integer,两个下标分别代表行和列,访问时写grid(2, 3)。入门阶段遇到矩阵,先用它存一张小表格,比如三门课四个人的成绩,跑一遍求和,比空想好理解。
4.6 文件读写:让结果留到明天还在
程序一关,变量里的数据就没了。要让结果留下来,就得写进文件。基本流程是四步:打开、写入或读取、关闭。
Sub WriteFile() Dim fileNo As Integer fileNo = FreeFile ' 取一个当前没被占用的文件号 Open "C:\练习\记录.txt" For Output As #fileNo Print #fileNo, "第一行记录" Print #fileNo, "第二行记录" Close #fileNo End SubFreeFile会自动返回一个空闲的文件编号,比手写 1 号更安全,避免和别的操作撞车。For Output表示「写入模式」,注意它会清空原文件内容重写;想追加内容要用For Append。写完之后必须Close,不关文件,内容可能没真正落盘,这是很多人写完发现文件是空的根本原因。
Sub ReadFile() Dim fileNo As Integer Dim line As String fileNo = FreeFile Open "C:\练习\记录.txt" For Input As #fileNo Do Until EOF(fileNo) Line Input #fileNo, line MsgBox line Loop Close #fileNo End SubFor Input是读取模式,EOF判断是否读到了文件末尾,Line Input一次读一整行。这里用Do Until而不是For,正是因为事先不知道文件有几行,属于上一节讲的那种「次数不确定」的场景。
注意:文件路径要指向一个真实存在的文件夹,路径里的反斜杠不能少,也不能用中文引号。文件不存在时打开会报错,读取之前先确认文件在不在。
4.7 函数与子程序:把常用代码打包成一个名字
当你发现某段代码在三个地方重复出现,就该把它抽成一个过程。带返回值叫函数,不带返回值叫子程序,写法上的区别只在于有没有Function和返回语句。
Function TaxOf(amount As Double) As Double ' 传入金额,返回按固定比例算出的税额 TaxOf = amount * 0.06 End Function函数名本身就是返回值的容器,把结果赋给函数名,调用方就能拿到。参数写在括号里,声明类型能让调用时自动检查。入门阶段不用纠结值传递和地址传递的区别,先用最简单的写法把重复代码收拢起来,等代码量上去了自然会遇到需要修改原值的情况。
5. 新手避坑与常见问题排查:这五处几乎人人卡一遍
写代码的过程里,报错是常态,不报错才是意外。这一章把新手最常撞上的五个问题按「现象、原因、解决」拆开讲,遇到类似的提示,直接照着对号入座就行。
5.1 五个高频坑:现象、原因、解决
第一个坑:代码明明写好了,运行却毫无反应。现象是按了运行键,界面没有任何变化,也没有报错。原因是光标不在过程内部,或者代码写在了错误的模块里。解决办法是把光标点到Sub和End Sub之间再运行;如果还是不动,去左边的工程列表里确认这段代码所在的位置,把它挪到正确的模块里。
第二个坑:弹窗提示「类型不匹配」。现象是运行到某一行突然中断,提示运行时错误 13。原因通常是InputBox返回的文字直接参与了加减乘除,或者把一段文字赋给了数字类型的变量。解决办法是在参与运算前用CInt、CDbl转换,并在转换前判断输入是否为空——用户直接点取消时,InputBox返回的是空字符串,转换必然失败。
第三个坑:循环跑不完,界面卡死。现象是程序一直转圈,点关闭也没用。原因是Do-Loop里缺少让条件变化的语句,或者For循环的步长方向写反了,比如For i = 1 To 10 Step -1。解决办法是强行中断程序,回头检查循环体里有没有更新判断条件的那一行;For循环则确认起点、终点和步长的方向一致。
第四个坑:文件写入成功,打开却是空的。现象是代码跑完没报错,去文件夹一看,文件大小是 0。原因是忘记写Close,或者用了For Output打开后又没真正执行写入语句。解决办法是养成本能:Open之后一定配一个Close,中间至少有一条Print或Write。
第五个坑:打开文件后代码不执行,顶部出现一条黄色提示。现象是别人发来的文件,点按钮没反应。原因是这类带代码的文件默认被限制运行,属于安全策略。解决办法是在确认文件来源可靠的前提下,把文件所在的文件夹加入受信任位置,或者按提示临时允许运行。来路不明的文件,永远先看内容再决定要不要放行。
5.2 报错弹窗怎么读:三行信息定方向
运行出错时会弹一个框,大部分人会直接点掉,这等于把唯一的线索扔了。其实它给的信息很有用:第一行是错误类型,比如「类型不匹配」「下标越界」「对象变量未设置」;中间是对错误的简短描述;最关键的是那个「调试」按钮,点下去,编辑器会把出错的那一行标黄。
标黄的那一行就是案发现场,但真正的凶手常常在上一行。比如数组下标越界,报错行是访问数组那一句,问题却出在上面循环的终点写大了。所以看到黄色高亮,先看这一行,再往上看两三行,基本就能定位。
还有一类错误不弹框,只是结果不对,这种最难查。遇到这种情况,别盯着代码硬看,用下一节的办法让程序把中间值吐出来。
5.3 断点与立即窗口:让程序停下来给你看
断点是排查问题的后悔药。在代码行左侧的灰色边栏点一下,会出现一个红点,再运行程序,跑到这一行就会暂停,此时把鼠标悬停在变量上,能看到它当前的值。按单步执行,一行一行往下走,观察每个变量的变化,逻辑在哪儿跑偏一目了然。查完记得把红点点掉,否则下次运行还会停在那里。
立即窗口是另一个利器。程序暂停时,在里面输入一个问号加变量名,回车就能看到它的值;也可以直接输入一句表达式试算,比如? Left("abcdef", 3),立刻返回结果,不用改代码重跑。我第一次用它的时候,把一个纠缠了两小时的循环问题在三分钟里看明白了。
血泪经验是:不要靠猜。新手最容易陷入的循环是「改一行、跑一次、还是错、再改一行」,改到第十次已经不知道自己在改什么。养成加断点、看中间值的习惯,排查效率会差出好几倍。
6. 下一步学什么:把练习变成能真正省时间的工具
入门阶段结束的标志,不是把教程翻完,而是你能不看示例,独立写出一个解决自己手头问题的小工具。从会抄到会写,中间隔着一段刻意练习,这一段我建议按周来安排,别贪快。
6.1 接下来四周的练习节奏
| 阶段 | 练什么 | 达到什么程度算过关 |
|---|---|---|
| 第 1 周 | 把教程里所有示例不看原文重敲一遍 | 能独立写出输入、计算、输出的完整流程,报错能自己定位 |
| 第 2 周 | 用条件判断和循环改写身边一个手工流程 | 能说清每个分支和循环的退出条件 |
| 第 3 周 | 引入数组处理一批数据,结果写入文件 | 数据不丢、文件能读回来、结果对得上 |
| 第 4 周 | 把重复代码抽成函数,给按钮绑定过程 | 改一处逻辑不用改十个地方 |
这张表的关键不在时间,而在「过关标准」。很多人第一周就卡住,是因为只想看不想敲。代码这东西,眼睛看会了和手指会了完全是两回事,同一段循环,敲三遍和看三遍的差别,一周之后就显现出来了。
6.2 三个值得动手的小工具
第一个是批量改名工具:读取一个文件夹下的文件清单,按规则生成新名字,先打印出来核对,确认无误再执行。这个练习会逼你把字符串函数、循环、文件读写串起来用。
第二个是数据核对工具:把两份表格的某一列读进数组,逐项比对,把不一致的行号和内容输出到文件。这个练习的价值在于它非常接近真实工作,做完你会对数组下标有新的理解。
第三个是带界面的小计算器:拖几个输入框和按钮,把前面写的计算逻辑挂上去。图形界面的意义在于让你体会「代码和界面是两回事」,界面负责收集和展示,代码负责计算,这个分离意识越早建立越好。
6.3 一个习惯,抵过一堆技巧
我一开始学的时候,最喜欢干的事是复制别人的代码,改两个变量名就跑,跑通了就以为学会了。结果遇到稍微变一点的需求,整个人就懵了,因为那段代码里没有一行是我自己想的。后来我给自己定了个规矩:凡是复制来的代码,必须逐行用中文注释写清楚它在干什么,写不出来就说明我没懂,那就回去查。
这个习惯一直留到现在,每次接手一段陌生代码,我都强制自己先注释一遍再改动。听起来笨,但它把「黑匣子」变成了「透明盒子」,出问题时知道该去哪儿找。你要是刚开始学,不妨也从第一个例子就这么做,哪怕注释写得土,也比一片空白强。
希望这些能帮到你,从今天的第一行MsgBox开始,慢慢把重复劳动交出去。
本文还有配套的精品资源,点击获取