最近為了乙個調貨程式,邊學邊用,終於是寫出來了乙個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 then
rownum = rng.row
firstmatchrow = rownum
while rownum
' 這裡寫處理邏輯
set rng = thisworkbook.sheets(1).range(colstylecolor & firstrow & ":" & colstylecolor & lastrow).find(stylecolor, after:=range(colstylecolor & rownum))
if not rng is nothing then
rownum = rng.row
end if
' 如果搜尋回到第乙個,退出函式 '
if firstmatchrow = rownum then
rownum = fasle
end if
wend
end if
while i < 100
'這裡處理邏輯 '
if i = 20 then
i = 100 '利用while的破壞條件退出迴圈 '
end if
wend
dim dic as object
set dic = createobject("scripting.dictionary")
if dic.exists(key) = false then
dic.add key, val
end if
' 迴圈讀取字典內容 '
for each key in dic
val = dic.item(key)
next
' 移除乙個內容 '
dic.remove(key)
' 移除全部內容 '
dic.removeall
for i = 1 to 10
msgbox i
next i
maxrow = thisworkbook.sheets(1).range("a65536").end(xlup).row
name = "vba"
if name = "vba" then
msgbox "yes"
elseif name = "***" then
msgbox "no"
else
msgbox "x"
end if
' 1~num求和 '
function getsum(num)
sum = 0
for i = 1 to num
sum = sum + i
next i
' 返回值為函式同名變數賦值 '
getsum = sum
end function
vba中的字典無法作為返回值,此時需要借助全域性變數傳遞返回值
public tmpdic as object
function test()
set tmpdic = createobject("scripting.dictionary")
tmpdic.add "a", 5
end function
使用exit sub
或exit 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...