VBA-在VBA中使用公式


在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(年,月,日)

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM