Excel VBA 代码笔记

【数组对单元格赋值】

如果数组是二维的,直接赋值

Range("A1").Resize(UBound(ARR), 2) = ARR

如果数组是一维的,需要转置

Range("A1").Resize(UBound(ARR), 2) = application.transpose(ARR)

【FIND方法运用】

Sub Find1() '在某列查找
Dim k
k = Range("A:A").Find("A").Row
MsgBox k
End Sub

Sub Find11() '在多列查找
Dim k
k = Range("A:B").Find("BCD").Row
MsgBox k
End Sub

Sub Find2() '查找的起始位置
Dim k
k = Range("A:B").Find("A", AFTER:=Range("A5")).Row
MsgBox k
End Sub

Sub Find3() '在值中查找
Dim k
k = Range("B:B").Find("SE", LookIn:=xlValues).Row
MsgBox k
End Sub

Sub Find31() '在公式中查找
Dim k
k = Range("B:B").Find("C2", LookIn:=xlFormulas).Address
MsgBox k
End Sub

Sub Find32() '在备注中查找
Dim k
k = Range("B:C").Find("AB", LookIn:=xlComments).Address
MsgBox k
End Sub

Sub Find41() '按模糊查找
Dim k
k = Range("B:C").Find("A", LookIn:=xlValues, LOOKAT:=xlPart).Address
MsgBox k
End Sub

Sub Find42() '匹配查找
Dim k
k = Range("B:C").Find("A", LookIn:=xlValues, LOOKAT:=xlWhole).Address
MsgBox k
End Sub

Sub Find5() '按先行后列的方式查找
Dim k
k = Range("A:B").Find("AB", LookIn:=xlValues, LOOKAT:=xlWhole, SEARCHORDER:=xlByRows).Address
MsgBox k
End Sub

Sub Find51() '按先列后行的方式查找
Dim k
k = Range("A:B").Find("AB", LookIn:=xlValues, LOOKAT:=xlWhole, SEARCHORDER:=xlByColumns).Address
MsgBox k
End Sub

Sub Find6() '查找方向(从后向前)
Dim k
k = Range("A:A").Find("A", , xlValues, xlWhole, xlByColumns, xlPrevious).Address
MsgBox k
End Sub

Sub Find61() '查找方向(从前向后)
Dim k
k = Range("A:A").Find("A", , xlValues, xlWhole, xlByColumns, xlNext).Address
MsgBox k
End Sub

Sub Find7() '字母大小写
Dim k
k = Range("a:b").Find("a", , xlValues, xlWhole, xlByColumns, xlNext, False).Address
MsgBox k
End Sub

Sub f7() '查找不到的情况
Dim MRG As Range
Set MRG = Range("A:A").Find("D")
If MRG Is Nothing Then
MsgBox "查找不到字母D"
Else
MsgBox "查找成功,单元格地址为:" & MRG.Address
End If
End Sub 

【新建/保存/关闭工作簿】

Dim wk as workbook
set wk = workbook.Add   '新建工作簿
p="C:\test.xlsx"       '保存路径
wk.SaveAs p       '保存文件
wk.Close savechanges:=True  '关闭并保存

【Excel 提示框】

Application.DisplayAlerts = True    '显示提示框(默认)
Application.DisplayAlerts = False   '隐藏提示框

【数组上标IBOUND/下标UBOUND】

Sub 一维()
Dim arr(-19 To 8)
MsgBox UBound(arr) '返回最大编号,结果为8
MsgBox LBound(arr) '返回最小编号,结果为-19
End Sub
Sub 二维()
Dim arr(-19 To 8, 2 To 5)
MsgBox UBound(arr)     '返回第1维(行的)最大编号,结果为8
MsgBox LBound(arr)     '返回第1维(行的)小编号,结果为-19
MsgBox UBound(arr, 2)  '返回第2维(列的)最大编号,结果为5
MsgBox LBound(arr, 2)  '返回第2维(列的)最小编号,结果为2
End Sub

【重新定义数组ReDim】

ReDim arr(1 To x)    '重新定义一维大小x
RdDim Preserve arr(1 To 5,1 To x)  '重新定义二维数组及保留原有数据

'使用preserve关键字只能修改最后一维的

猜你喜欢

转载自blog.csdn.net/joson1234567890/article/details/52045043