For Each cellVal In ThisWorkbook.Sheets(1).Range(startColName & rowNum & ":" & endColName & rowNum)"cellVal即單元格的內容"cellVal.Column 列號"cellVal.Row 行號Next
8. VBA 使用Find搜尋單元格內容
在使用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 IfFind迴圈破除 使用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
9. VBA While迴圈退出迴圈
While i < 100"這裡處理邏輯 "If i = 20 Theni = 100 "利用While的破壞條件退出迴圈 "End ifWend
10. VBA 字典型別使用
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
11. VBA For 迴圈
For i = 1 To 10MsgBox iNext i
12. VBA 獲取最大行號
13. VBA If ElseIf
Name = "vba"If Name = "vba" ThenMsgBox "Yes"ElseIf Name = "xxx" ThenMsgBox "No"ElseMsgBox "X"End If
14. VBA 函式定義
" 1~num求和 "Function getSum(num)Sum = 0For i = 1 To numSum = Sum + iNext i" 返回值為函式同名變數賦值 "getSum = SumEnd Function
15. VBA 函式返回值
VBA中的字典無法作為返回值,此時需要藉助全域性變數傳遞返回值
Public tmpDic As ObjectFunction test()Set tmpDic = CreateObject("Scripting.Dictionary")tmpDic.Add "a", 5End Function
1. VBA 區域性變數和全域性變數
2. VBA 變數賦值
3. VBA 選中一個Sheet
4. VBA 獲取單元格內容
5. VBA 獲取單元格行號和列號
6. VBA 單元格賦值
7. VBA Range獲取單元區間
For Each cellVal In ThisWorkbook.Sheets(1).Range(startColName & rowNum & ":" & endColName & rowNum)"cellVal即單元格的內容"cellVal.Column 列號"cellVal.Row 行號Next8. VBA 使用Find搜尋單元格內容
在使用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 IfFind迴圈破除 使用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 If9. VBA While迴圈退出迴圈
While i < 100"這裡處理邏輯 "If i = 20 Theni = 100 "利用While的破壞條件退出迴圈 "End ifWend10. VBA 字典型別使用
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.RemoveAll11. VBA For 迴圈
For i = 1 To 10MsgBox iNext i12. VBA 獲取最大行號
13. VBA If ElseIf
Name = "vba"If Name = "vba" ThenMsgBox "Yes"ElseIf Name = "xxx" ThenMsgBox "No"ElseMsgBox "X"End If14. VBA 函式定義
" 1~num求和 "Function getSum(num)Sum = 0For i = 1 To numSum = Sum + iNext i" 返回值為函式同名變數賦值 "getSum = SumEnd Function15. VBA 函式返回值
VBA中的字典無法作為返回值,此時需要藉助全域性變數傳遞返回值
Public tmpDic As ObjectFunction test()Set tmpDic = CreateObject("Scripting.Dictionary")tmpDic.Add "a", 5End Function16. VBA 退出Sub或Function
使用exit sub或exit function即可
17. VBA 註釋
VBA使用單引號作為註釋
18. 複製Sheet
19. 新增Sheet
Worksheets.Add().Name = "Sheet xxx"