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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Excel VBA编程教程(基础一)(Microsoft)

發布時間:2023/12/19 综合教程 27 生活家
生活随笔 收集整理的這篇文章主要介紹了 Excel VBA编程教程(基础一)(Microsoft) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

VBA介紹

Visual Basic for Applications(VBA)是 VisualBasic 的一種宏語言,是微軟開發出來在其桌面應用程序中執行通用的自動化(OLE)任務的編程語言。主要能用來擴展 Windows 的應用程序功能,特別是Microsoft Office軟件。

說簡單點,VBA 是運行在 Microsoft Office 軟件之上,可以用來編寫非軟件自帶的功能的編程語言。Office 軟件提供豐富的功能接口,VBA 可以調用它們,實現自定義的需求。基本上,能用鼠標和鍵盤能做的事情,VBA 也能做。

正如前文所述,VBA 可以運行在 Office 軟件上,包括 Excel、Word、PPT、Outlook 等。VBA 語言在 Office 軟件中是通用的,基本語法和用法都相同。但是每一個軟件具有自己獨有的對象,例如 Excel 有單元格對象,Word 有段落對象,PPT 有幻燈片對象。

編寫第一個VBA宏

」:簡單的說,宏是一段可以運行的 VBA 代碼片段。

step one 創建啟用宏的工作簿

首先新建一個工作簿,并將工作簿保存為「啟用宏的工作簿」類型。詳細步驟查看這篇文章。

step two 打開 VBA 編輯器

通過功能區「開發工具 → 代碼→Visual Basic」或快捷鍵 Alt + F11 打開 VBA 編輯器。詳細步驟參考這篇文章。

step three

Excel 工作簿中的 VBA 代碼通常保存在工作表對象或模塊中。本例中,我們用模塊保存 VBA 代碼。

首先選中左側工程列表中的工作簿,后右鍵,在彈出的選項列表中,選擇「插入」。二級菜單中,選擇「模塊」,完成插入新模塊。

插入完成后,在工程列表對應工作簿內,在模塊文件夾下,顯示新插入的模塊。新插入的模塊的默認名稱是,模塊 x,本例中是模塊1。在屬性窗口,可以修改模塊的名稱。

step four 打開模塊

雙擊上一步插入的模塊1,在右側代碼窗口區域里,將打開模塊1的代碼編輯器。在右側代碼窗口中當前打開的代碼編輯器所對應的模塊,在編輯器標題末尾可以看到。

step five 創建一個宏(VBA 過程)

在代碼編輯窗口中,輸入以下代碼:

Sub MyCode()
    
End Sub

這段代碼是一個空的 VBA 過程,只有開始和結束。過程的其他代碼,都在這中間編寫。

其中 SubSubroutine 的縮寫,直譯過來是子程序。在 VBA 中表示一個過程,也是代表一個過程的開始。下一行 End Sub 表示過程的結束。

step six 編寫 VBA 過程實體部分

過程的實體部分指的是,真正會被執行的部分。上一步創建的是一個空的 VBA 過程,里面不包含實體代碼。雖然可以正常運行,但是不會有結果輸出。

這一步我們編寫 VBA 過程的實體部分。將如下代碼輸入到過程的開始和結束處之間。

MsgBox "Hello World"

step seven 運行代碼

現在我們已經寫完了一個完整的 VBA 過程,現在運行它,看一下結果。

將光標放置在代碼的任何一處,點擊工具欄上的運行「▶ 」按鈕,或按 F5,運行代碼。


可以看到運行結果,Excel 彈出一個對話框,顯示內容正是在代碼中編寫的內容。

認識VBA編輯器


編輯器中每個模塊的基本用法如下:

  • 工具欄:編輯器命令欄,與 Excel 功能區域類似,包含 Excel VBA 開發相關的命令。
  • VBA 工程:顯示當前 VBA 工程包含的所有對象。通常,一個工作簿就是一個 VBA 工程,其中包括 Excel
    對象、工作表對象、模塊等。
  • 屬性窗口:查看和設置選中對象的屬性的窗口。
  • 代碼編輯窗口:實際編寫代碼的位置。編寫、修改、保存代碼,都在這里進行。
  • 立即窗口:代碼運行過程中,打印出的內容,在立即窗口中顯示。一般用于調試代碼。
管理VBA工程

通常,一個工作簿就是一個 VBA 工程,其中包括 Excel 對象、工作表對象、模塊等。當多個工作簿同時打開時,他們公用同一個 VBA 編輯器,VBA 工程界面顯示所有的 VBA 工程。

插入/刪除模塊

在一個 VBA 工程中想要插入新的模塊時,可在 VBA 工程右鍵,選擇插入類型即可。

要刪除模塊,選中模塊,右鍵,選擇「移除 模塊」

語法介紹

程序結構示例

首先,本篇將使用以下代碼,介紹各種程序結構,大家可以先看一下。

Sub MyCode()

    '聲明循環變量和是否為空變量
    Dim i As Integer
    Dim isBlank As Boolean
    
    '循環 A2-A10 單元格
    For i = 2 To 10
    
        '存儲單元格是否為空的結果
        isBlank = Cells(i, 1).Value = ""
        
        '如果為空,則用上方的單元格的值填充當前單元格
        If isBlank Then
            Cells(i, 1) = Cells(i - 1, 1)
        End If
        
    Next i

End Sub

以上代碼運行后,在 A2:A10 單元格區域,依次判斷每一個單元格是否為空,如果是空,則用上一個單元格的值填充。

過程

過程是 VBA 中,程序實際運行的最小結構。單獨的一行或多行代碼無法運行,必須把它們放置在一個過程里,才能運行。

在示例中,Sub 過程名() 開頭,End Sub 為結尾部分是一個過程的主題,其余代碼需要放置在兩者之間。

Sub MyCode()
    
End Sub

程序語句

語句,是表示一個完整意思的一行代碼。

例如,示例中第一行,聲明變量就是一條語句。它表示,聲明一個整型變量。同理,第二行、第三行和其余的每一行都是語句。VBA 中的過程,就是由這樣一條條語句構成的。

Dim i As Integer
Dim isBlank As Boolean

通常,一行就是一個語句,除非它用換行符或合并符號.

Excel VBA 對象

我們學習 VBA 的最終目的是操縱 Excel,完成一些特定的目標。其中,操縱 Excel 就是通過 Excel VBA 對象完成的。

在示例中,Cells() 就是一個 Excel VBA 對象,表示一個單元格,提供行號和列號指定單元格。

程序運行結構

接下來是程序結構中最核心的部分,也是最有意思的部分,程序運行結構。大部分編程語言都具備基本的三種程序運行結構,分別是順序結構、循環結構、判斷結構。各種簡單到復雜的算法,都是由這三種基本的結構,相互組合而完成。

1.順序結構

首先是基本的順序結構。順序結構,顧名思義就是按照順序依次執行。VBA 中的順序就是從上到下、從左到右的順序。

在示例中,首先運行兩個聲明語句,然后運行循環結構,以此類推。值得注意的事,當程序有嵌套時,嵌套的部分也是按照順序指定的。

2.循環結構

第二個基本結構是循環結構。當使用循環結構時,循環部分代碼,按照指定的循環次數,循環重復執行。

在我們的示例中,For 至 Next i 之間的代碼就是一個循環代碼。

VBA 中,有多種循環結構,本例中是 For 循環結構。For 循環結構中,第一行指定循環次數,最后一行表示開始下一個循環。

'循環開始
For i = 2 To 10
	'這里是循環的代碼
Next i
3.判斷結構

最后一種基本結構是,判斷結構。簡單來說,該結構中,當提供的表達式為真(True)時,判斷結構的主體部分才會被執行,否則跳過。

在示例代碼中,If 開頭和 End If 結尾處是典型的判斷結構。第一行,判斷 isBlank 變量是否為真,如果是,則執行判斷結構主體部分,否則跳過。

'如果為空,則用上方的單元格的值填充當前單元格
If isBlank Then
    Cells(i, 1) = Cells(i - 1, 1)
End If

運行

下面,我們實際運行我們的示例代碼,看一看它具體的效果。




Excel 是一個對象,這個對象包含很多屬性和子對象,而 VBA 是可以操作這些對象的工具,實現各種各樣的效果。例如,Excel 包括 Range 對象,即單元格對象,使用 VBA 可以改變單元格對象的填充顏色屬性。用代碼表示如下。

'A1 單元格的填充顏色設置為顏色號為 49407 的顏色
Range("A1").Interior.Color = 49407
  • Range(“A1”)、Interior、Color 等是 Excel 具備的對象和屬性;
  • 對象和屬性的操作,是通過 VBA 語言實現的,即上面是一行 VBA 代碼。中間的等號(=)是 VBA 語言的賦值符號,也是能改變單元格填充顏色的關鍵所在。

變量

變量是存儲數據的一種表達方式。在程序開始,可以聲明一個變量,指定變量的類型(數字、文本、邏輯值等),并給變量賦值。在程序其他地方,就可以用該變量,使其存儲的值參與運算。

'聲明一個文本類型的變量
Dim val As String
'給 val 變量賦值,即 "Hello World"
val = "Hello World"
'在 A1 單元格寫入 val 變量存儲的數據
Range("A1").Value = val

數組

組表示一組同類型的數據的集合,是 VBA 中最重要的概念之一。以下面的代碼為例:

'創建數組
Dim Val(1 to 4) As String
'給數組的元素賦值
Val(1) = "Excel"
Val(2) = "Word"
Val(3) = "PowerPoint"
Val(4) = "Outlook"

基礎運算符

使用 VBA 開發某項功能,本質上是,對變量進行基礎的運算和操作,例如加減乘除比較等。為此,VBA 提供了很多運算符和操作符,利用它們可以實現復雜的運算。

今天先學習 VBA 提供的基礎運算符和操作,以及它們的基本用法。VBA 運算符可以分為以下 6 類:

  • 賦值運算符
  • 算數運算符
  • 比較運算符
  • 邏輯運算符
  • 連接運算符
  • 其他運算符

VBA 中的連接運算符用于連接 2 個或多個文本。其用法與 Excel 公式中的 & 符號相同。

連接操作符
運算符 說明 示例
& 連接兩個文本 “Zhang” & ” ” & “San” -> “Zhang San”
其他操作符
運算符 說明
_ (下劃線) 將一行代碼分解成兩行
: ( 英文冒號) 將兩行代碼放置在一行
比較運算符

比較運算符,比較提供的兩個變量,如果符合比較條件,返回 True,否則,返回 False。

假設 a = 10b = 3-> 表示結果。

運算符 說明 示例
= 比較兩個值是否相等 a = b -> False
> 大于 a > b -> True
>= 大于等于 a >= b => False
< 小于 a < b -> False
<= 小于等于 a <= b -> False
<> 不等于 a <> b -> True
  • VBA 運算符基礎教程(加減乘除+高級操作)
  • VBA 數據類型基礎教程(程序更高效、更精準)
注釋

通常,一段代碼寫完后,不會完全沒問題。在實際使用過程中可能需要修改,符合最新的需求。過一段時間再打開查看時,可能已經忘記了當時的思路,不能很快想起來有些代碼實際的用途,更不用說讓別人查看了。這時,就需要注釋出場了。

注釋是對代碼的一種解釋,不影響代碼的運行。VBA 中的注釋語句是,以英文單引號 (')開頭,后接需要解釋說明的內容。

選擇結構
if Then 結構

選擇結構中,If Then 結構是最基礎的一個。它只有條件表達式真時,執行的代碼。

If Then 結構基本語法如下,其中 End If是選擇結構的結束標志。

If 條件表達式 Then
    '表達式為真時,執行的代碼
End If

現在我們看實際的例子,判斷學生是否及格,及格條件是成績 ≥60。如果及格,在C列對應單元格填寫“及格”。具體代碼如下:

Sub MyCode()

    Dim i As Integer
    
    For i = 2 To 10
    
        If Cells(i, "B").Value >= 60 Then
            Cells(i, "C") = "及格"
        End If
        
    Next i

End Sub

我們可以看到,我們使用 B 列中的學生成績與 60 分比較,如果≥60分,就在 C 列填寫及格。

條件表達式是 Cells(i, "B").Value >= 60,選擇性執行的代碼部分是 Cells(i, "C") = "及格"

其中,For 語句是表示循環結構,這里只需知道程序從第一個學生循環到最后一個學生,依次判斷每個學生的成績。循環結構將在下一篇中做詳細介紹。

將以上代碼運行后,可以看到運行結果如下:

If Else 結構

很多時候,我們根據表達式的真假,真時執行一塊代碼,假時執行另一塊代碼。這種需求可以使用 If Else結構實現。

If Else結構中,條件表達式在真時,執行Then后的代碼;條件表達式為假時,執行 Else后的代碼?;菊Z法如下:

If 條件表達式 Then
    '真時執行的代碼
Else
    '假時執行的代碼
End If

我們繼續看實際的例子。在上一個例子的基礎上,這次對不及格的學生,在C列填入不及格。代碼如下:

Sub MyCode()

    Dim i As Integer
    
    For i = 2 To 10
    
        If Cells(i, "B").Value >= 60 Then
            Cells(i, "C") = "及格"
        Else
            Cells(i, "C") = "不及格"
        End If
        
    Next i

End Sub

在這個例子中,條件表達式 Cells(i, "B").Value >= 60為假時,表示學生成績低于60分,即不及格。這時就執行 Else后的代碼。

程序運行結果如下:

循環結構

VBA 中程序循環結構基礎,以及多種循環結構形式。包括子類在內,VBA 中常使用的循環結構包括 6 種,它們是:

循環結構 說明
For … Next 循環 按指定次數循環執行
For Each 循環 逐一遍歷數據集合中的每一個元素
Do While … Loop 循環 當條件為真時,循環執行
Do … Loop While 循環 當條件為真時,循環執行。無論條件真假,至少運行一次
Do Until … Loop 循環 直到條件為真時,循環執行
Do … Loop Until 循環 直到條件為真時,循環執行。無論條件真假,至少運行一次

此外,學習了兩種跳出循環的語句,它們是:

跳出語句 說明
Exit For 跳出 For 循環
Exit Do 跳出 Do While/Until 循環

本文介紹兩個常用的循環

For 循環
  1. For … Next 循環

使用 For ... Next循環可以按指定次數,循環執行一段代碼。For 循環使用一個數字變量,從初始值開始,每循環一次,變量值增加或減小,直到變量的值等于指定的結束值時,循環結束。

For ... Next 循環語法如下:

For [變量] = [初始值] To [結束值] Step [步長]
    '這里是循環執行的語句
Next

其中:

  • [變量] 是一個數字類型變量,可在循環執行的語句里使用。
  • [初始值] 和 [結束值] 是給定的值;
  • [步長] 是每次循環時,變量的增量。如果為正值,變量增大;如果為負值,變量減小。

下面看一個實際的例子,求 1 至 10 數字的累積和。

Sub MyCode()

    Dim i As Integer
    Dim sum As Integer
    
    For i = 1 To 10 Step 1
        sum = sum + i
    Next
    
End Sub

可以看到,For 循環使用i變量,循環 10 次,i 的值從 1 到 10 變化。

值得注意的是,For 循環的 Step 值如果是 1,則 Step 關鍵詞可省略。上述過程循環部分可寫成如下方式:

For i = 1 To 10
    sum = sum + i
Next
  1. Do While 循環

Do While循環用于滿足指定條件時循環執行一段代碼的情形。循環的指定條件在 While關鍵詞后書寫。

Do While … Loop循環,根據 While 關鍵詞后的條件表達式的值,真時執行,假時停止執行。基本語法如下:

Do While [條件表達式]
    '循環執行的代碼
Loop

其中,只要 [條件表達式] 為真,將一直循環執行。[條件表達式] 一旦為假,則停止循環,程序執行 Loop 關鍵詞后的代碼。

看一個實際的例子,還是求 1- 10 累積和。

Sub MyCode()

    Dim i As Integer
    Dim sum As Integer
    
    i = 1
    Do While i <= 10
        sum = sum + i
        i = i + 1
    Loop
    
End Sub

i變量的初始值是 1,根據 While 后的條件,只要 i 變量小于等于 10,后續的代碼就可以一直循環執行。

這里為了演示使用了 Do While 循環,實際情況下,這種求和問題,使用 For 循環更簡潔。

With 結構語法

With 結構由 WithEnd With 兩個語句構成,對象的屬性和方法都寫在兩者之間?;菊Z法如下:

With [對象]
    .[屬性] = [數據]
    .[方法]
    '其他屬性和方法
End With

With 結構里,對象的屬性和方法均有點 (.)符號開始,后接對象的屬性名和方法名。

With 結構實例

現在看一個實際的例子,需要將工作簿中 Sheet1 工作表設置新名稱,然后設置標簽顏色為黑色,最后隱藏工作表。

如果不用 With 結構,代碼如下:

Sub MyCode()

    Worksheets("Sheet1").Name = "新名稱"
    Worksheets("Sheet1").Tab.ThemeColor = xlThemeColorLight1
    Worksheets("Sheet1").Visible = xlSheetHidden
    
End Sub

可以看到,每個語句都重復寫 Worksheets(“Sheet1”) 部分。

使用 With 結構,可以避免重復寫同一個對象名,代碼如下:

Sub MyCode()

    With Worksheets("Sheet1")
        .Name = "新名稱"
        .Tab.ThemeColor = xlThemeColorLight1
        .Visible = xlSheetHidden
    End With
    
End Sub

復制實例

本實例實現的是把很多excel表格的一些數據單元復制到一個新的文檔上。

Sub 合并當前目錄下所有工作簿的全部工作表()

    Dim MyPath, MyName, AWbName

    Dim Wb As Workbook, WbN As String

    Dim G As Long

    Dim Num As Long

    Dim BOX As String

    Application.ScreenUpdating = False

    MyPath = ActiveWorkbook.Path

    MyName = Dir(MyPath & "\" & "*.xls")

    AWbName = ActiveWorkbook.Name

    Num = 0

    Do While MyName <> ""

        If MyName <> AWbName Then

            Set Wb = Workbooks.Open(MyPath & "\" & MyName)

            Num = Num + 1

            With Workbooks(1).ActiveSheet

                .Cells(.Range("A65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)

                'For G = 1 To Sheets.Count

                    Wb.Sheets(1).Range("A3:E3").Copy .Cells(.Range("A65536").End(xlUp).Row + 2, 1)
                    Wb.Sheets(1).Range("C9:D18").Copy .Cells(.Range("A65536").End(xlUp).Row + 2, 1)

                'Next

                WbN = WbN & Chr(13) & Wb.Name

                Wb.Close False

            End With

        End If

        MyName = Dir

    Loop

    Range("A1").Select

    Application.ScreenUpdating = True

    MsgBox "共合并了" & Num & "個工作薄下的全部工作表。如下:" & Chr(13) & WbN, vbInformation, "提示"

End Sub

總結

以上是生活随笔為你收集整理的Excel VBA编程教程(基础一)(Microsoft)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美色资源 | 人妖ts福利视频一二三区 | 久久毛片网| 秋霞欧美视频 | 91丨九色丨国产 | av88av| 色悠悠av | freesexvideos第一次| 天天射视频 | 午夜性色福利影院 | 国产美女免费网站 | 午夜极品视频 | 中文字幕另类 | 50一60岁老妇女毛片 | 一本大道久久a久久综合婷婷 | 内地级a艳片高清免费播放 91在线精品一区二区 | 女人叫床高潮娇喘声录音mp3 | 日本午夜网 | 久久精品国产99久久久 | 香蕉视频三级 | 夜夜激情网| 曰韩一级片 | 男人的天堂免费av | 中文字幕亚洲视频 | 蜜桃99视频一区二区三区 | 免费在线视频一区二区 | 欧美亚洲综合视频 | 国产一区二区高清 | 国产99页| 一色道久久88加勒比一 | 日本黄色aaa| 欧美一区二区三区系列电影 | 一级片a级片 | 日本电影大尺度免费观看 | 日韩一区av在线 | 91综合色 | 91视频 - 88av| 亚洲a在线观看 | 在线看黄色的网站 | 三级亚洲 | 欧美日本三级 | 亚洲国产私拍精品国模在线观看 | 国产一线二线三线女 | 日韩精品久久久久久免费 | 成人精品一区日本无码网 | 久久久久伊人 | 欧美一级片在线 | 免费毛片一区二区三区 | 欧美国产日韩在线观看 | 5级黄色片| 国产成人精品网站 | 免费黄色视屏 | 国产男女视频在线观看 | 久久精品国产久精国产 | 精品久久免费 | 欧美久久久久久久久久久久 | 伊人影视久久 | 熟女自拍一区 | 国产av成人一区二区三区 | 日韩欧美高清在线视频 | 成年人黄色网址 | 国产天天射 | 国产精品一卡二卡 | 最新中文字幕在线观看 | 涩涩视频免费在线观看 | 亚洲激情婷婷 | 日韩视频在线观看 | 成人午夜在线观看 | 国产精品久久久久久久久夜色 | 国产a级大片 | 迈开腿让我尝尝你的小草莓 | 丝袜诱惑av| 日本高清一区二区视频 | 国产午夜福利100集发布 | jizz成人| xxxx999| 亚洲一区二区久久久 | 精品在线视频播放 | 国产精自产拍久久久久久蜜 | 欧美日一区二区 | 不卡影院一区二区 | 国产资源在线视频 | 亚洲欧美国产精品 | 日本a级大片 | 草比网站 | 最新中文字幕第一页 | 长篇乱肉合集乱500小说日本 | www伊人 | 日本五十路在线 | 日韩免费看片 | 最污的网站 | 美女被草视频在线观看 | 国产久视频 | 视频一区 中文字幕 | 国产精品毛片一区视频播 | 欧美亚洲激情 | 夜夜草| 岳睡了我中文字幕日本 | 粉嫩av |