事件
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "单元格选择发生了改变"
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False ’取消事件级联
Target = Target * 2
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Calculate()
MsgBox "公式的值发生了改变"
End Sub
Private Sub Worksheet_Calculate()
MsgBox "公式的值发生了改变"
End Sub
程序事件
Public WithEvents app As Excel.Application
-----------------------------------------------------------------
Private Sub Workbook_Open()
Set app = Excel.Application
End Sub
-----------------------------------------------------
Private Sub app_WorkbookOpen(ByVal Wb As Workbook)
' a = Application.InputBox("请输入打开excel程序口令", "安全提示")
' If a <> 123 Then
' Wb.Close False
' End If
End Sub
VBA数组
数组与单元格的区别,数组更快
Sub v4() '运行时间0.01秒
Dim t
t = Timer
For x = 1 To 100000
m = m + 1000 '真接调用内存中的值
Next x
MsgBox Timer - t
End Sub
--------------------------------------------------
Sub v5() '运行时间0.5秒
Dim t
t = Timer
For x = 1 To 100000
m = m + Cells(1, 1) '调用单元格中的值
Next x
MsgBox Timer - t
End Sub
----------------------------------------
'1、什么是VBA数组呢?
'VBA数组就是储存一组数据的数据空间?数据类型可以数字,可以是文本,可以是对象,也可以是VBA数组.
'2 VBA数组存在形态
' VBA数组是以变量形式存放的一个空间,它也有行有列,也可以是三维空间。
'1) 常量数组
'array(1,2)
'array(array(1,2,4),array("a","b","c"))
'2) 静态数组
'x(4) '有5个位置,编号从0~4
'arr(1 to 10) '有10个位置,编号1~10
'arr(1 to 10,1 to 2) '10行2列的空间,总共20个位置,这是二维数组
'arr(1 to 10,1 to 2,1 to 3) '三维数组,总10*2*3=60个位置。这是三维数组
'3)动态数组
'arr() '不知道有多少行多少列
'向VBA数组中写入数据
1、按编号(标)写入和读取
Sub t1() '写入一维数组
Dim x As Integer
Dim arr(1 To 10) '下标从1开始,默认从0开始
arr(2) = 190
arr(10) = 5
End Sub
Sub t2() '向二维数组写入数据和读取
Dim x As Integer, y As Integer
Dim arr(1 To 5, 1 To 4)
For x &#