Execl工具-宏-VBA

VBA是一種編程語言,它依托于Office軟件,不能獨立運行,通過VBA可以實現(xiàn)各種Office軟件操作的自動化。

通俗易懂的來說就是在Excel中想實現(xiàn)什么功能,就可以通過VBA語言編寫的程序區(qū)實現(xiàn)。

VBA編碼語法

VBA的代碼的開始和結(jié)束

Sub 代碼名稱()
  代碼內(nèi)容
  ...
End Sub

數(shù)據(jù)類型

①字符串 String

②數(shù)字類型:整型 Integer、長整型 Long、單精度浮點型 Single(小數(shù)點后最多6位)、雙精度浮點型 Double(小數(shù)點后最多14位)。

③日期型 Date

④布爾型 Boolean:True\False.

⑤變體型 Variant(不知道是什么類型,可定義為variant,但這種操作應(yīng)當盡量避免)

變量

用于保存在程序運行過程中需要臨時保存的值或?qū)ο蟆?/p>

定義變量:Dim 變量名 (As 數(shù)據(jù)類型)

Dim i as Integer
i=6
方法1:dim 變量名 as 數(shù)據(jù)類型
方法2:dim 變量名 as 數(shù)據(jù)類型,變量名 as 數(shù)據(jù)類型
方法3:dim 變量名,變量名 as 數(shù)據(jù)類型 ()
方法4:dim 變量名+數(shù)據(jù)類型符
Sub 變量測試()

Dim i As Integer
Dim i1 As Integer, str As String
Dim i2, i3 As Integer
Dim i4%

End Sub

變量名的命名規(guī)則

由字母、數(shù)字、下劃線以及漢字構(gòu)成
只能以字母或漢字開頭,不可以是數(shù)字或者下劃線開頭
長度不可以超過255個字符
不可以使用VBA中的關(guān)鍵字
見名知意
變量名的后面可以添加一個符號,表示該變量盛裝的數(shù)據(jù)的類型,常用符號:%、&、#、$、!
盡量不要使用中文命名
不要使用特殊符號,可以用英文字母、中文、數(shù)字、下劃線,不能以數(shù)字開頭
不能使用系統(tǒng)保留字,比如sub、for
大小寫不敏感

注意
變量名字不要重復(fù)
VBA中變量可以不聲明就使用,但是不建議,如果不聲明就使用,那么該變量里面可以盛裝任意類型的數(shù)據(jù)

字符串

幾個常用的字符串函數(shù):

Len(): 求長度

Trim(): 去掉兩端空格

Replace(): 替代子串

Left(): 從左邊取若干字符

Right(): 從右邊取若干字符

Mid(): 從中間取若干字符

Instr(): 查找子串

LCase(), UCase(): 將字母變成小/大寫

進行操作前可疊加使用Trim()和LCase()清除數(shù)據(jù)中的空格和因大小寫不一致出現(xiàn)的問題。

for循環(huán):

for i=1 to 10 step 2
cells(i,2)=7
next i

①循環(huán)

For … next

Do While … Loop

For Each in … Next

②判斷

If ... Then ... (Else if ... Else ...) End if

Not, And, Or(優(yōu)先級從左往右)

if分支結(jié)構(gòu):

if a>90 then
cells(1,1)=""
elseif a>70 then
cells(1,1)=""
elseif a>60 then
cells(1,1)=""
else
cells(1,1)=""
end if

BVA調(diào)試:

設(shè)置斷點,讓程序暫停
單步調(diào)試,每次只執(zhí)行一次(F8)
添加監(jiān)視,隨時查看變量值

字符串:

設(shè)置雙引號,否則會被認為是變量
特殊字符:空格 回車 換行,空串和空格字符串不一樣
大寫小寫不一樣,文本數(shù)字要分開,1是數(shù)字1,“1”是字符串
邏輯運算符 not and or (優(yōu)先級從高到低)

while循環(huán):

whlie cells(i,1)<>""
cells(i,2)=5
i=i+1
wend
do whlie cells(i,1)<>""
cells(I,2)=5
i=i+1
loop

面向?qū)ο?/h3>

面向?qū)ο蟮母拍睿簩ο螅ㄏ到y(tǒng)中具體的事物)、類(對象的分類)、屬性(是什么樣子)、方法(能做什么)
常用的對象:

application(excel系統(tǒng)) 

workbook工作簿 

worksheet工作表 

range單元格內(nèi)容區(qū)域

為代表對象的變量賦值,必須使用set關(guān)鍵字

用worksheets引用工作表的兩種方法:

根據(jù)工作表的顯示方法,比如worksheets(5)
根據(jù)工作表的名稱,比如worksheets("數(shù)據(jù)明細")

worksheet對象的name屬性:

根worksheet.name代表了該工作表的名稱,可以用它取得或者修改工作表名稱

worksheets的count屬性:代表了所屬工作簿中一共有多少工作表

worksheets的add方法:在所屬工作簿中新建一個工作表

舉個例子:循環(huán)打開多個工作簿

估計好多人聽說VBA是從合并工作簿知道的,合并工作簿是有通用的代碼框架的,記住框架,再也不怕對工作簿進行其他操作。

Sub 循環(huán)打開工作簿()

    Application.ScreenUpdating = False

    myfile = Dir(ThisWorkbook.Path & "\*.xls*")

    Do While myfile <> ""

          If myfile <> ThisWorkbook.Name Then

                Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & myfile

                我是需要填空的代碼

          Else

        End If

        myfile = Dir

    Loop

    Application.ScreenUpdating = True

    MsgBox "完成"

End Sub

如果你要提取特定內(nèi)容的單元格,只需要結(jié)合find方法,查找內(nèi)容是“你好”的單元格的行號,并賦值。在空白處填上如下代碼即可。

ThisWorkbook.Worksheets(1).Cells(a, 1) 
= wb.worksheets(1).Cells.Find("你好", , xlValues, xlWhole, xlByColumns, xlNext, True, True).row

如果你要合并工作簿,那么只需要在填空的代碼里,對單元格區(qū)域應(yīng)用copy方法。在空白處填上如下代碼即可。

wb.worksheets(1).range("a1").usedrange.copyThisWorkbook.Worksheets(1).range("a1")
Option Explicit

Sub 季度匯總()
    
    Dim i, j, k, name
    Dim w As Worksheet, r As Worksheet
    
    Set r = Worksheets("季度匯總")

    '循環(huán)掃描匯總表中的每一行,記住每次要查找的姓名
    For i = 3 To 10
        name = r.Cells(i, 2)
            
        '循環(huán)掃描所有工作表,并用 w 指向該工作表
        For Each w In Worksheets
            '如果該工作表名字以“月”結(jié)尾,則認為是月報表
            If Right(w.name, 1) = "月" Then
                '循環(huán)掃描該月報表的每一行,判斷其姓名列是否等于name
                k = 3
                Do While w.Cells(k, 2) <> ""
                    '如果第k行姓名等于name,則將該行累加到匯總表第i行
                    
                    If LCase(Trim(w.Cells(k, 2))) = LCase(Trim(name)) Then
                    
                        For j = 3 To 6
                        r.Cells(i, j) = r.Cells(i, j) + w.Cells(k, j)
                        Next j
                        
                    End If
                    k = k + 1
                Loop
            End If
        Next w
    Next i
End Sub
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在我們?nèi)粘J褂肊xcel的時候,不僅會用到當前Excel文件的數(shù)據(jù),還經(jīng)常需要訪問其他的數(shù)據(jù)文件。這些數(shù)據(jù)文件可能...
    趙客縵胡纓v吳鉤霜雪明閱讀 967評論 0 7
  • VBA訂制工具欄 http://club.excelhome.net/thread-1047254-1-1.htm...
    大海一滴寫字的地方閱讀 2,357評論 0 0
  • 本例為設(shè)置密碼窗口 (1) If Application.InputBox(“請輸入密碼:”) = 1234 Th...
    浮浮塵塵閱讀 14,790評論 1 20
  • 熟練使用Excel的朋友們可能會知道Excel主要包含六大主題,其內(nèi)容包括:Excel基礎(chǔ)操作、圖形與圖表、函數(shù)與...
    1248閱讀 2,123評論 0 5
  • 最近學習VBA,發(fā)現(xiàn)之前的我太過于追求技術(shù)上的成功而忘記了學習的本質(zhì),是真正解決實際問題。學習了如何錄制宏,了解到...
    錦音aa閱讀 1,444評論 0 3

友情鏈接更多精彩內(nèi)容