不会写就录制宏然后看代码
1.注释使用单引号“'”
2.f8是逐句执行
3.选中函数按 f1 是帮助,函数解释
4.代码换行(下划线+空格+换行)
5.excel中的对象指的是:工作簿,工作表,单元格,图表,透视表等等 集合也是一种特殊的对象。cells(第几行,第几列)
6.集合没有指定哪个对象。只是一种统称。如:workbooks,worksheets,cells等等
7.测试打印:Debug.Print Sheet1.Name
8.Sheet1.Range("e3") = "fddsf"
Sheet1.Name = "Lixi"
9.Sub 选择方法()
Range("a1:a10").Select
'注:如果单元格区域前没有写工作表名,则默认为活动工作表
End Sub
Sub 复制方法()
Sheet1.Range("a1:a10") = 1 '将1写入表一的a1:a10区域
Sheet1.Range("a1:a10").Copy Sheet2.Range("a1") '将表一的a1:a10区域的值复制到表2的a1
End Sub
Sub 删除方法()
Sheets(3).Delete
End Sub
10.数组下标从1开始
11.本地窗口是代码调试窗口,“立即窗口”是日志打印结果窗口
12.变量定义格式: dim 变量 as 变量类型,可不写变量类型
13.currency货币类型 integer整型
VBA中的常见数据类型:
类型 注释 简写 占用内存
Integer 整型 % 2Byte
Single 单精度 ! 4Byte
Double 双精度 # 8Byte
String 字符型 $ 定长或变长( 变长字符串最多可包含大约 20 亿 ( 2^31)个字符。 定长字符串可包含 1 到大约 64K ( 2^16 ) 个字符。)
Currency 货币型 @ 8Byte
Range 对象
简写声明:Dim d%, e!, f$
14.If a = b Then MsgBox "相等" 或者:
If a = b Then
MsgBox "相等"
End If
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
15.单行条件判断: if 条件判断 then 条件成立 else 条件不成立 : if 2>1 then Msgbox "yes" else msgbox "no"
16.'Select Case 语句 根据表达式的值,来决定执行几组语句中的其中之一。相当于switch
Sub select单条件判断()
i = 1
Select Case i
Case Is > 0
MsgBox "正数"
Case Else
MsgBox "负数"
End Select
End Sub
Sub select多条件判断()
Select Case Sheet1.[d1].Value
Case "A"
Sheet1.[a3] = "A型血的你,是个不怎么样的人!"
Case "B"
Sheet1.[a3] = "B型血的你,也是个不怎么样的人~"
Case "AB"
Sheet1.[a3] = "AB型血的你,是个更不怎么样的人~"
Case "O"
Sheet1.[a3] = "O型血的你,还是不错的!"
Case Else
Sheet1.[a3] = "没有这种型血,看来你 是个最不怎么样的人~!"
End Select
End Sub
17.do...loop 循环语句
Sub 基本示例()
Dim a%
Do
a = a + 1
If a > 10 Then
MsgBox a & "终于大于10"
Exit Do
End If
Loop
End Sub
18.do while 循环语句:
Sub 循环语句while()
Dim rs As Integer
rs = 2
Do While Cells(rs, 2) <> "" '当单元格不等于空时,则循环
If Cells(rs, 2) >= 90 Then Cells(rs, 3) = "√"
rs = rs + 1
Loop '循环
End Sub
19.'do until...loop
Sub 循环语句DOLOOP2()
Dim rs As Integer
rs = 2
Do Until Cells(rs, 2) = "" '直到单元格为空为止,才结束
If Cells(rs, 2) >= 90 Then Cells(rs, 3) = "√"
rs = rs + 1
Loop '循环
End Sub
'实例-隔行填色
Sub 隔行填色()
Dim rs As Integer
rs = 2
Do Until Sheet2.Range("a" & rs) = ""
Sheet2.Range("a" & rs & ":g" & rs).Interior.ColorIndex = 7
rs = rs + 2
Loop
End Sub
20.'while与until不但可以放在DO后面,也可以放在LOOP后面
'事实上有时在循环的最后一行进行判断,更具有意义
Sub doloop的最后判断循环()
Dim pss$, i!
Do
i = i + 1
If i > 3 Then Exit Do
pss = InputBox("请输入密码")
Loop While pss = "123"
End Sub
21. '当需要处理集合成员时,一般会用for each..next,实际上就是处理对象
Sub foreachnext循环1()
Dim rng As Range, n!
For Each rng In Sheet1.Range("a2:a10") '取a2:a10中的每个单元格
If rng = "A1" Then rng.Interior.ColorIndex = 3
Next
End Sub
22.for循环
Sub 九九乘法表制作()
Dim a!, b!
For a = 1 To 9
For b = 1 To 9
If b > a Then
Sheet2.Cells(a, b) = ""
Else
Sheet2.Cells(a, b) = a & "×" & b & "=" & a * b
End If
Next
Next
End Sub
1.'exit是退出当前语句
'1.Exit Do
'2.Exit For
'3.Exit Function
'4.Exit Sub
Sub exitfor退出()
Dim i!
For i = 2 To 7
If Sheet1.Cells(i, 1) = "田七" Then
Exit For
End If
Next i
MsgBox "第一个(田七)的位置在" & i & "行"
End Sub
'end结束一个过程或块。
'End
'End Function
'End If
'End Select
'End Sub
Sub aa()
i = 1
End
Exit Sub
j = 1
End Sub
2.标识: 标识符:例如:line:,一般用于goto goto:line
3.变量可不指定任何数据类型,会默认认为是变体变量
4.超过8:00在右侧单元格输入“迟到”,下面的1/3认为就是8:00,
'go to...return
Sub gotoreturn()
Dim i!
For i = 2 To 10
If Sheet1.Range("a" & i) > 1 / 3 Then GoSub 100
Next i
Exit Sub
100:
Sheet1.Range("b" & i) = "迟到"
Return
End Sub
5.return语句就是从哪里来回哪里去
6.当错误出现的时候干嘛,如下:
Sub onerrorresume()
Dim i!
On Error Resume Next '当错误的时候继续执行下去
For i = 2 To 8
Cells(i, 4) = Cells(i, 3) + Cells(i, 2)
Next i
End Sub
'On Error GoTo当错误的时候去哪儿?
Sub onerrorgoto()
On Error GoTo 100
For i = 2 To 8
k = Sheet1.Cells(i, 2) + Sheet1.Cells(i, 3)
Next i
100:
MsgBox "对不起,错误发生在第" & i & "行"
End Sub
7.Range("a1").parent.name 意思是说:a1单元格上一级的名字,其实指的是工作表的名称
8.Range("c"& i)=range("a",& i)+range("b" & i) 等于 sheet1.cell(1,3)="=a1+b1" 也等于 sheet1.cells(i,4)="=a" & i & "+b" &
i
9.FormulaArray 代表支持数组公式:
Sub 数组公式()
Range("e1:e10").FormulaArray = "=a1:a10+b1:b10"
End Sub
10.调用内置函数:
Sub 带工作表函数的计算()
Dim i As Integer
For i = 1 To 10
Sheet1.Cells(i, 4) = "=sum(a" & i & ":b" & i & ")"
Next i
End Sub
11.公式带引用的方法是 多添加一个引号“"”
Sub 公式带引号的计算()
Cells(12, 1) = "=COUNTIF(A1:A10,"">9"")"
Cells(12, 2) = "=sum(INDIRECT(""a1:a10""))"
End Sub
12.定义: 运算符是代表VBA某种运算功能的符号?
'1)赋值运算符 :=
'2)数学运算符: &(字符连接符)、+(加)、-(减)、Mod(取余)、\(整除)、*(乘)、/(除)、-(负号)、^(指数)
'3)逻辑运算符:Not(非)、And(与)、Or(或)、Xor(异或)、Eqv(相等)、Imp(隐含)
'4)关系运算符: = (相同)、<>(不等)、>(大于)、<(小于)、>=(不小于)、<=(不大于)、Like
Sub mods()
a = 4 ^ 2
End Sub
'like用来比较两个字符串。可以理解成A 看起来像 B :a like b
Sub likess()
a = 1 Like "[!2]"
End Sub
13.通配符
' ?任何单一字符
' * 零个或多个字符。
' # 任何一个数字 (0–9)。
’"[a-z]" a到z
' [charlist] charlist.中的任何单一字符?
' [!charlist] 不在 charlist 中的任何单一字符。
逻辑值 逻辑值 AND OR XOR EQV IMP
TRUE FALSE FALSE TRUE TRUE FALSE FALSE
FALSE TRUE FALSE TRUE TRUE FALSE TRUE
TRUE TRUE TRUE TRUE FALSE TRUE TRUE
FALSE FALSE FALSE FALSE FALSE TRUE TRUE
14.视觉错误 眼睛疲劳
15.工作簿就是excel的一个文件,这个文件由多个工作表组成