VBA函数
函數
文章目錄
- VBA的函數
- excel函數對應的vba函數
- counta
- vlookup
- excel特有函數和vba特有函數
- vba 字符串函數
- instr
- split
- vba 常用函數
- 錯誤處理
- 控制輸入的格式
- 自己寫函數
- 帶參數的sub
- 代碼復用
沒完成的任務:張三李四登錄p=8
VBA的函數
熟悉的函數可以用,有哪些新的函數
excel函數對應的vba函數
counta
函數計算范圍中不為空的單元格的個數。
=counta(a1:a10) ' 指定某個工作表的某個區域 =counta(重慶!A:A)-1vba中使用普通方法,計算不為空的單元格:
Sub tongji() Dim k, i As Integer alrow = Sheet2.Range("a65525").End(xlUp).Row For i = 1 To alrowIf Sheet2.Cells(i, 1) <> "" Thenk = k + 1End IfNext Sheet1.Range("d26") = k - 1 End Subvba中調用函數快速解決:
Sheet1.Range("d26") = WorksheetFunction.CountA(Sheet2.Range("a:a"))-1例子:
Sub tongji()Dim k, kboy, kgirl As IntegerFor i = 2 To Sheets.Countk = k + WorksheetFunction.CountA(Sheets(i).Range("a:a"))kboy = kboy + WorksheetFunction.CountIf(Sheets(i).Range("f:f"), "男")kgirl = kgirl + WorksheetFunction.CountIf(Sheets(i).Range("f:f"), "女")NextSheet1.Range("d26") = kSheet1.Range("d27") = kboySheet1.Range("d28") = kgirlEnd Subvlookup
函數功能
vlookup(找什么,在哪一塊找(塊的第一列會和找什么一一比較),找到以后返回第幾列,精確匹配嗎(0表示精確)),使用函數
=VLOOKUP(D9,重慶!A:H,5,0)使用vba代碼的案例:
!! 如果函數找不到,會返回#value,但是vba找不到,程序會奔潰!!!
excel特有函數和vba特有函數
excel中的left等函數,在vba中不用,vba中有如下一些類型的函數,可以直接用
with vba.math.strings.datetime.filesystem.finacial.information.interactionend with interaction : inputbox msgboxvba 字符串函數
字符串切割,可以用excel-數據-分列 來切割。
excel自帶函數有一些
instr
使用vba,從郵箱中(123456@qq.com)截取qq號:
可以用worksheetfunction.find,但是如果找不到,會崩潰.
使用instr,找到返回第幾位,找不到返回0.
split
返回數組,通過索引獲取,從0開始
' 12-1234-3452-2354 Range("a3") = split(range("a2"),"-")(0)vba 常用函數
'vba函數可以簡寫
num = val(text) 轉成數字 num = text *1VBA.Information.IsNumeric() 是不是數字 簡稱IsNumeric() vba.strings中的:left mid right錯誤處理
on error resume next XXX XXX ;只要某一行出錯,就跳過這一行,這一次不執行控制輸入的格式
只能輸入整數
I = inpubox("請輸入數字,不是文字") If VBA.Information.IsNumeric(I)=false or I<1 ThenExit Sub End IfVBA.Information.IsNumeric()簡稱IsNumeric() 'vba函數可以簡寫自己寫函數
excel自帶函數不夠用,可以寫自己的函數
在模塊中編輯函數
Function toDollar(x)toDollar = x * 0.18 End Function ' 稱呼轉換函數 Function mynominal(str As String)If str = "男" Thenmynominal = "先生"Elsemynominal = "女士"End IfEnd Function可以在excel直接調用,也可以在vba里面調用。
這樣,vba特有函數(如split)就可以在excel里面使用了。例如寫一個函數,截取字符串中第一和第二個“-”之間的部分
帶參數的sub
可以根據參數,執行一些動作。比函數功能多
比如參數是表名(字符串),動作是創建這個名字的表單
代碼復用
針對某個excel寫的通用代碼,想要在其他excel中仍能使用。
1、 將寫好的宏另存為xla格式,默認路徑
2、 開發工具-加載項-勾選那個宏
3、 文件-選項-快速訪問工具欄-常用命令-宏-選中代碼庫
總結
- 上一篇: 手把手教你封装一个ant design的
- 下一篇: 团队升级