
2023年VBA学习笔记.doc
80页EXCEL之VBA学习笔记 姓名:刘磊 时间:2023年9目录第一章 VBA基础知识 3第二章 工作簿以及工作表的操作 9第三章:单元格区域操作 14第四章:事件程序: 36第五章:VBA数组 42第一章 VBA基础知识1:代码帮助: F12:代码换行: 下划线+空格+回车3:.常用代码操作excel中的对象 (1)、工作簿(Workbooks) Workbooks(N)第N个工作簿 Workbooks ("工作簿名") ActiveWorkbook 活动工作簿 ThisWorkBook 代码所在工作簿 (2)、工作表(Worksheets) Sheets(N) 第N个工作表 Sheets("工作表名") SheetN 第N个工作表 ActiveSheet 活动工作表 worksheets 与 Sheets的区别 (3)、 单元格(cells) Range ("单元格地址") Cells(行号,列号) [A1]单元格简写 Activecell 活动单元格 Selection 当前被选取的区域4:常量与变量 (1.)常量:常量是定义了之后就不做变化了。
常量定义格式:Const 常量名= 常量表达式 (2).变量:在定义之后还能再次赋值 变量定义格式:Dim 变量 As 变量类型5:数据类型 (1.)VBA中的常见数据类型: 类型 注释 简写 占用内存 Integer 整型 % 2Byte Single 单精度 ! 4Byte Double 双精度 # 8Byte Long 长整型 & 4Byte String 字符型 $ 定长或变长( 变长字符串最多可包含大约 20 亿 ( 2^31)个字符。
定长字符串可包含 1 到大约 64K ( 2^16 ) 个字符) Currency 货币型 @ 8Byte6:if条件语句 1.单行形式1(If...Then) If 条件判断 Then 条件成立结果 注意 在单行形式中,按照 If...Then 判断的结果也可以执行多条语句 所有语句必须在同一行上并且以冒号分开?例子:Sub test()If 1 > 10 Then a = a + 1: b = 1 + a: c = 1 + bEnd Sub 2. 单行形式1(If 条件判断 Then 条件成立 Else 条件不成立)例子:Sub test2()If 1 > 1 Then MsgBox "yes" Else MsgBox "no"End Sub 3.块形式(If...Then…End) If 条件判断 Then 条件成立结果 End If例子:Sub test3()If 11 > 10 Thena = 1 + ab = 1 + ac = 1 + bEnd IfEnd Sub 4.块形式的If嵌套 If 条件判断 Then 成立时的结果 ElseIf 条件判断 Then 成立时的结果 …… Else 不成立时的结果 End If例子: Sub 等级判断() If Sheet1.Range("b1") >= 90 Then Sheet1.Range("b2") = "优" ElseIf Sheet1.Range("b1") >= 80 Then Sheet1.Range("b2") = "良" ElseIf Sheet1.Range("b1") >= 70 Then Sheet1.Range("b2") = "中" Else Sheet1.Range("b2") = "差" End If End Sub7:select语句用于判断选择 Select case Case 1 Case 2 ….. Case else End select8:循环语句 (1):do loop语句 Do ….. Loop(2):do while loop语句 Do while (条件成立时候循环) Loop(3)do until loop 语句 Do until (直到条件成立) Loop[注]:while与until不仅可以放在DO后面,也可以放在LOOP后面事实上有时在循环的最后一行进行判断,更具故意义。
Do [{While | Until} 表达式][执行的一条或多条语句][Exit Do][执行的一条或多条语句]Loop---------------------------------------------------------------------------------while:当这个条件为True时就 循环until:直到这个条件为True时就 跳出循环---------------------------------------------------------------------------------或者可以使用下面这种语法:Do[执行的一条或多条语句][Exit Do][执行的一条或多条语句]Loop [{While | Until}表达式]---------------------------------------------------------------------------------用Do…Loop循环要注意的几点:1. While与Until是放在Do后面还是Loop后面,取决于是先判断再循环,还是先循环再判断前者则在Do后面,后者则在Loop后面。
2. 可以在Do...Loop中的任何位置放置任意个数的 Exit Do 语句,随时跳出 Do...Loop 循环3. Do...Loop + If...Then + Exit Do 通常结合使用.4. 假如 Exit Do 使用在嵌套的 Do...Loop 语句中,则 Exit Do 会将控制权转移到 Exit Do 所在位置的外层循环4):for each next 语句 Eg: Sub foreachnext循环1()Dim rng As Range, n! (range为单元格对象)For Each rng In Sheet1.Range("a2:a10") 取a2:a10中的每个单元格 If rng = "A1" Then rng.Interior.ColorIndex = 3NextEnd SubSub foreachnext循环2()Dim wsh As Worksheet, n As Byte, m As String (worksheet为工作表变量)For Each wsh In Worksheets 取当前工作表集合中的每个成员 n = n + 1 Sheet1.Cells(n, 3) = wsh.NameNextEnd Sub9:exit语句与end语句 (1): exit是退出当前语句1.Exit Do2.Exit For 3.Exit Function4.Exit Sub (2):结束一个过程或块 End End Function End If End Select End Sub [注]:end 有时候在某些地方的功能和exit for的作用相同。
10:跳转语句GoTo line无条件地转移到过程中指定的行 Gosub return 跳转到某行,并且可以返回注意太多的 GoTo 语句,会使程序代码不容易阅读及调试尽也许使用结构化控制语句(Do...Loop、For...Next、If...Then...Else、Select Case) For exampleSub gotoreturn()Dim i!For i = 2 To 10 If Sheet1.Range("a" & i) > 1 / 3 Then GoSub 100Next iExit Sub100: (作为gosub的跳转标示符号) Sheet1.Range("b" & i) = "迟到" Return (return语句返回到跳转的地方)End Sub11:对错误语句的解决方法1:On Error Resume Next 当错误的时候继续执行下去方法2:On Error goto 当错误时候去哪儿12:with语句当对某个对象执行一系列的语句时,不用反复指出对象的名称For example Sub with嵌套1()Range("a1").Value = "Who am i ?"Range("a1").Parent.。












