VBA基本語法整理

2021-09-11 18:05:59 字數 4014 閱讀 5623

最近為了乙個調貨程式,邊學邊用,終於是寫出來了乙個excel vba程式,其中學會了不少使用方法,藉此整理出來,希望能夠給後來的新人有所幫助。

1. 區域性變數

在sub或者function結構中定義的變數

2. 全域性變數

public name '普通全域性變數

public styledic as object '字典全域性變數

普通變數,直接用:

name = "zjmainstay"

賦值即可。

定義乙個字典變數:

dim styledic as object

set styledic = createobject("scripting.dictionary")

thisworkbook.sheets(2).select 』2表示第2個sheet,下標從1開始
val = thisworkbook.sheets(1).cells(rownum, colnum)

或:val = thisworkbook.sheets(7).range("a" & rownum)

colnum是數值,a與colnum對應英文本母,a對應1,b對應2,以此類推

colnum = thisworkbook.sheets(1).range("a1").column

rownum = thisworkbook.sheets(1).range("a1").row

注:使用cells獲取也可以

thisworkbook.sheets(1).cells(rownum, colnum) = val

或thisworkbook.sheets(7).range("a" & rownum) = val

for each cellval in thisworkbook.sheets(1).range(startcolname & rownum & ":" & endcolname & rownum)'cellval即單元格的內容'cellval.column 列號'cellval.row 行號next在使用find的時候經常會遇到兩個問題: 

1. vba find搜尋失敗,丟擲異常 

使用vba中find搜尋內容,當搜尋失敗時,會丟擲異常導致程式無法正常處理 

解決方法如下,使用rng儲存,然後用if not rng is nothing then判斷。

set rng = thisworkbook.sheets(1).range(colname & firstrow & ":" & colname & lastrow).find(stylecolor)if not rng is nothing then』可以找到(這裡處理)end if

find迴圈破除 

使用vba中find搜尋內容,會出現迴圈搜尋的問題,此時,可以使用判斷是否回到第一次作為判斷,斷開迴圈。

set rng = thisworkbook.sheets(1).range(colname & firstrow & ":" & colname & lastrow).find(stylecolor)if not rng is nothing thenrownum = rng.rowfirstmatchrow = rownumwhile rownum

' 這裡寫處理邏輯

set rng = thisworkbook.sheets(1).range(colstylecolor & firstrow & ":" & colstylecolor & lastrow).find(stylecolor, after:=range(colstylecolor & rownum))if not rng is nothing thenrownum = rng.rowend if

' 如果搜尋回到第乙個,退出函式 'if firstmatchrow = rownum thenrownum = fasleend ifwendend if

while i < 100'這裡處理邏輯 'if i = 20 theni = 100 '利用while的破壞條件退出迴圈 'end ifwend
dim dic as objectset dic = createobject("scripting.dictionary")if dic.exists(key) = false thendic.add key, valend if

' 迴圈讀取字典內容 'for each key in dicval = dic.item(key)next

' 移除乙個內容 'dic.remove(key)

' 移除全部內容 'dic.removeall

for i = 1 to 10msgbox inext i
maxrow = thisworkbook.sheets(1).range("a65536").end(xlup).row
name = "vba"if name = "vba" thenmsgbox "yes"elseif name = "***" thenmsgbox "no"elsemsgbox "x"end if
' 1~num求和 'function getsum(num)sum = 0for i = 1 to numsum = sum + inext i' 返回值為函式同名變數賦值 'getsum = sumend functionvba中的字典無法作為返回值,此時需要借助全域性變數傳遞返回值

public tmpdic as objectfunction test()set tmpdic = createobject("scripting.dictionary")tmpdic.add "a", 5end function使用exit subexit function即可

vba使用單引號作為注釋

thisworkbook.sheets(1).copy after:=worksheets(worksheets.count)

activesheet.name = "sheet1備份"

worksheets.add().name = "sheet ***"

VBA基本語法整理

1.區域性變數 在sub或者function結構中定義的變數 2.全域性變數 public name 普通全域性變數 public styledic as object 字典全域性變數普通變數,直接用 name zjmainstay 賦值即可。定義乙個字典變數 dim styledic as obj...

cjson基本語法整理

static const char ep 函式中使用const 1 const修飾函式引數 a.傳遞過來的引數在函式內不可以改變 無意義,因為var本身就是形參 void function const int var b.引數指標所指內容為常量不可變 void function const char...

MATLAB中基本語法整理

參考 1.size 獲取矩陣的行數和列數 1 s size a 當只有乙個輸出引數時,返回乙個行向量,該行向量的第乙個元素時矩陣的行數,第二個元素是矩陣的列數。2 r,c size a 當有兩個輸出引數時,size函式將矩陣的行數返回到第乙個輸出變數r,將矩陣的列數返回到第二個輸出變數c。3 siz...