在VBA中如何使用excel中的函數
這樣Application.WorksheetFunction. “.”后面就能找到在excel中常用的函數
代碼
Sub tongji() Dim k, l, m As Integer For i = 2 To Sheets.Count k = k + Application.WorksheetFunction.CountA(Sheets(i).Range("a:a")) - 1 l = l + Application.WorksheetFunction.CountA(Sheets(i).Range("f:f")) - 1 m = m + Application.WorksheetFunction.CountA(Sheets(i).Range("f:f")) - 1 Next Sheet1.Range("d26") = k Sheet1.Range("d27") = l Sheet1.Range("d28") = m End Sub
VBA里使用公式 例如 vlookup 如何找不到 就會報錯
Sub chaxun() Sheet1.Range("d14") = Application.WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheet2.Range("a:h"), 5, 0) End Sub
可以使用 On Error Resume Next 意思是如果這行代碼出錯了 那么執行下一行代碼
Sub chaxun() Dim i As Integer On Error Resume Next For i = 2 To Sheets.Count Sheet1.Range("d14") = Application.WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheets(i).Range("a:h"), 5, 0) Next End Sub
VBA自身函數最后附表查看 VBA中文本函數比較重要
在這里需要注意
sub ss() dim l #如果后面沒有定義具體的類型,這個l可以是任意類型 l = inputbox("第幾行分裂") #這時候你輸入的數值 但是在 inputbox 接受的是文本 所以 l 在此是文本 l = val(l) #這個意思是將文本轉化成數值 或者 l= l *1 這樣也可以 if l = isnumeric(l) =false then #在vba中判斷是否是數值 vab.information.isnumeric exit sub endif end sub
兩個查找函數 使用find函數有個缺點 如果查找不到 代碼會崩潰
Sub ss() Range("a1") = Application.WorksheetFunction.Find("@", Range("a2")) Range("a1") = VBA.Strings.InStr(Range("a2"), "@") End Sub
另個vba 函數 split #split將數據分割成數組 然后從數組中取值
Sub ss() Range("b2") = Split(Range("a2"), "-")(2) End Sub
在excel中的時間函數用date函數來實現
在VBA中則是VBA
range("b2") = vba.DateTime.DateSerial(年,月,日)