日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VBA函数

發布時間:2023/12/9 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)-1

vba中使用普通方法,計算不為空的單元格:

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 Sub

vba中調用函數快速解決:

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 Sub

vlookup

函數功能

vlookup(找什么,在哪一塊找(塊的第一列會和找什么一一比較),找到以后返回第幾列,精確匹配嗎(0表示精確))

使用函數

=VLOOKUP(D9,重慶!A:H,5,0)

使用vba代碼的案例:
!! 如果函數找不到,會返回#value,但是vba找不到,程序會奔潰!!!

Sub chaxun() Dim k As Integer On Error Resume Next Sheet1.Range("d14,d16,d18,d20,d22").ClearContents For i = 2 To Sheets.CountSheet1.Range("d14") = WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheets(i).Range("a:H"), 5, 0)Sheet1.Range("d16") = WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheets(i).Range("a:H"), 6, 0)Sheet1.Range("d18") = WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheets(i).Range("a:H"), 3, 0)Sheet1.Range("d20") = WorksheetFunction.VLookup(Sheet1.Range("d9"), Sheets(i).Range("a:H"), 8, 0)If Sheet1.Range("d14") <> "" ThenSheet1.Range("d22") = Sheets(i).NameExit ForEnd IfNext End Sub

excel特有函數和vba特有函數

excel中的left等函數,在vba中不用,vba中有如下一些類型的函數,可以直接用

with vba.math.strings.datetime.filesystem.finacial.information.interactionend with interaction : inputbox msgbox

vba 字符串函數

字符串切割,可以用excel-數據-分列 來切割。
excel自帶函數有一些

instr

使用vba,從郵箱中(123456@qq.com)截取qq號:
可以用worksheetfunction.find,但是如果找不到,會崩潰.
使用instr,找到返回第幾位,找不到返回0.

Dim i as String vba.strings.instr(range("a2"),"@")

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里面使用了。例如寫一個函數,截取字符串中第一和第二個“-”之間的部分

function jqzf(str1,str2,i)jqzf = split(str1,str2)(i-1) end function

帶參數的sub

可以根據參數,執行一些動作。比函數功能多
比如參數是表名(字符串),動作是創建這個名字的表單

sub create( s as string)XX end subsub createit()call create("表1")call create(range("a1")) end sub

代碼復用

針對某個excel寫的通用代碼,想要在其他excel中仍能使用。

1、 將寫好的宏另存為xla格式,默認路徑
2、 開發工具-加載項-勾選那個宏
3、 文件-選項-快速訪問工具欄-常用命令-宏-選中代碼庫

總結

以上是生活随笔為你收集整理的VBA函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。