VBA 变量、函数、公式
一、什么是变量?
'所谓变量,就是可变的量。就好象在内存中临时存放的一个小盒子,这个小盒子放的什么物体不固定。
Sub t1() Dim X As Integer 'x就是一个变量 For X = 1 To 10 Cells(X, 1) = X Next X End Sub
二、小盒子里可以放什么? '1 放数字 '如t1 '2 放文本 Sub t2() Dim st As String Dim X As Integer For X = 1 To 10 st = st & "Excel精英培训" Next X End Sub '3 放对象 Sub t3() Dim rg As Range Set rg = Range("a1") rg = 100 End Sub '4 放数组 Sub t4() Dim arr(1 To 10) As Integer, X As Integer For X = 1 To 10 arr(X) = X Next X End Sub
三、变量的类型和声明
'1 变量的类型
'详见帮助文件
'2 为什么要声明变量
'3 声明变量
'dim public
四、变量的存活周期
'1 过程级变量:过程结束,变量值释放
'如t1
'2 模块级变量:变量的值只在本模块中保持,工作簿关闭时随时释放
Sub t6() m = 1 End Sub Sub t5() MsgBox m m = 7 End Sub
'3 全局级变量: 在所有的模块中都可以调用,值会保存到EXCEL关闭时才会被释放。
' public 变量 Sub t7() MsgBox qq End Sub
五 变量的释放 '一般情况下,过程级变量在过程运行结束后就会自动从内存中释放,而只有一些从外部借用的对象变量才需要使用set 变量=nothing进行释放。
公式函数
一、在单元格中输入公式 '1、用VBA在单元格中输入普通公式 Sub t1() Range("d2") = "=b2*c2" End Sub Sub t2() Dim x As Integer For x = 2 To 6 Cells(x, 4) = "=b" & x & "*c" & x Next x End Sub '2、用VBA在单元格输入带引号的公式 Sub t3() Range("c16") = "=SUMIF(A2:A6,""b"",B2:B6)" '遇到单引号就把单引号加倍 End Sub '3、用VBA在单元格中输入数组公式 Sub t4() Range("c9").FormulaArray = "=SUM(B2:B6*C2:C6)" End Sub '二、利用单元格公式返回值 Sub t5() Range("d16") = Evaluate("=SUMIF(A2:A6,""b"",B2:B6)") Range("d9") = Evaluate("=SUM(B2:B6*C2:C6)") End Sub '三、借用工作表函数 Sub t6() Range("d8") = Application.WorksheeFunction.CountIf(Range("A1:A10"), "B") End Sub '四、利用VBA函数 Sub t7() Range("C20") = VBA.InStr(Range("a20"), "E") End Sub '五、编写自定义函数 Function wn() wn = Application.Caller.Parent.Name End Function
'VBA第七集:VBE编辑器
'一、VBE的窗口
'1、工程窗口
'A 显示工作簿工作表对象
'B 窗体
'C 模块
'D 类模块
'range("a1")=10
'对应工程窗口的对象和模板,显示其所具体的一些特征。
'3、代码窗口
'A 注释文字的设置
'B 代码缩进的设置
'C 代码强制转行的设置
'D 代码运行和调试
'逐句运行
'设置断点
'E 对象列表框和过程列表框
'4、立即窗口
'立即窗口可以把运行过程中的值立即显示出来,主要用于程序的调试
Sub d() Dim x As Integer, st As String For x = 1 To 10 st = st & Cells(x, 1) Debug.Print "第" & x & "次运行结果:" & st Next x End Sub
'5、本地窗口
'在本地窗口中可以显示运行中断时对象信息、变量值、数组信息等。
Sub d1() Dim x As Integer, k As Integer For x = 1 To 10 k = k + Cells(x, 1) Next x End Sub