關於在excel中編寫vba巨集的初學者教程(以及學習的原因)

如果您經常使用Excel,那麼就值得學習如何建立VBA巨集並訪問更多功能和功能。...

Excel宏可以通過自動化經常使用的Excel過程來節省大量的時間。但是宏實際上是非常有限的。錄音工具很容易出錯,錄音過程也很尷尬。

vba-macros-excel

使用VBA來創建宏給了您更多的功能。您可以確切地告訴Excel要做什麼以及如何做。您還可以訪問更多的功能和能力。如果您經常使用Excel,那麼學習如何創建VBA宏是值得的。

我們從基本知識開始。

什麼是vba(vba)?

VBA是visualbasicforapplicati***,一種可以在許多微軟應用程序中使用的編程語言。visualbasic是一種編程語言,VBA是它的特定於應用程序的版本。(微軟早在2008年就停止了visualbasic,但VBA仍然很強大)。

幸運的是,對於非程序員來說,VBA非常簡單,您用來編輯它的接口提供了很多幫助。您將使用彈出式建議和自動完成的許多命令,幫助您快速地運行腳本。

不過,VBA需要一段時間才能適應。

excel中vba宏的優點

如果VBA比錄製宏更困難,為什麼要使用它?簡而言之,VBA宏的功能更強大。

您可以訪問Excel的所有功能和功能,而不是在電子表格中單擊並記錄這些單擊。你只需要知道如何使用它們。

一旦您對VBA更熟悉了,您就可以用更少的時間在常規宏中完成所有可能要做的事情。結果也將更加可預測,因為你告訴Excel要做什麼。一點都不含糊。

一旦創建了VBA宏,就可以很容易地保存和共享它,以便其他人可以利用它。當您與許多需要在Excel中執行相同操作的人一起工作時,這一點尤其有用。

讓我們看看一個簡單的VBA宏,看看它是如何工作的。

excel中vba宏的一個例子

讓我們看一個簡單的宏。我們的電子表格包含員工姓名、員工工作的商店編號以及他們的季度銷售額。

007Ys3FFly1gourqq7ebaj30im0bj3yx

此宏將添加每個商店的季度銷售額,並將這些總額寫入電子表格中的單元格(如果您不確定如何訪問VBA對話框,請查看此處的VBA演練):

Sub StoreSales()Dim Sum1 As CurrencyDim Sum2 As CurrencyDim Sum3 As CurrencyDim Sum4 As CurrencyFor Each Cell In Range("C2:C51") Cell.Activate If IsEmpty(Cell) Then Exit For If ActiveCell.Offset(0, -1) = 1 Then Sum1 = Sum1 + Cell.Value ElseIf ActiveCell.Offset(0, -1) = 2 Then Sum2 = Sum2 + Cell.Value ElseIf ActiveCell.Offset(0, -1) = 3 Then Sum3 = Sum3 + Cell.Value ElseIf ActiveCell.Offset(0, -1) = 4 Then Sum4 = Sum4 + Cell.ValueEnd IfNext Cell Range("F2").Value = Sum1Range("F3").Value = Sum2Range("F4").Value = Sum3Range("F5").Value = Sum4 End Sub

這看起來可能很長很複雜,但我們將對其進行分解,以便您可以看到各個元素並瞭解一些VBA的基礎知識。

聲明sub

在模塊的開頭,我們有“Sub StoreSales()”。這定義了一個名為StoreSales的新子類。

您還可以定義函數——不同的是函數可以返回值,而sub不能(如果您熟悉其他編程語言,sub相當於方法)。在這種情況下,我們不需要返回值,所以我們使用sub。

在模塊的末尾,我們有“end Sub”,它告訴Excel我們已經完成了這個VBA宏。

聲明變量

腳本中的第一行代碼都以“Dim”開頭。Dim是VBA用於聲明變量的命令。

所以“Dim Sum1”創建了一個名為“Sum1”的新變量。但是,我們需要告訴Excel這是什麼類型的變量。我們需要選擇一種數據類型。VBA中有許多不同的數據類型--您可以在Microsoft的幫助文檔中找到完整的列表。

因為我們的VBA宏要處理貨幣,所以我們使用的是貨幣數據類型。

語句“Dim Sum1 As Currency”告訴Excel創建一個名為Sum1的新貨幣變量。您聲明的每個變量都需要有一個“As”語句來告訴Excel它的類型。

啟動for循環

循環是在任何編程語言中都可以創建的最強大的東西。如果您不熟悉循環,請查看Do While循環的解釋。在本例中,我們使用了For循環,本文也介紹了這一點。

循環如下:

For Each Cell in Range("C2:C51")[a bunch of stuff]Next Cell

這告訴Excel遍歷指定範圍內的單元格。我們使用了Range對象,它是VBA中的一種特定類型的對象。當我們這樣使用它時,Range(“C2:C51”)——它告訴Excel我們對這50個單元格感興趣。

“對於每個單元格”都告訴Excel,我們將對範圍內的每個單元格執行某些操作下一個單元格“完成我們想做的一切,並告訴Excel從一開始就開始循環(從下一個單元格開始)。

我們還有這樣一句話:“如果IsEmpty(Cell),那麼退出For。”

你能猜出它是幹什麼的嗎?

注意:嚴格來說,使用While循環可能是更好的選擇。但是,為了教學,我決定使用帶有出口的for循環。

if-then-else語句

這個特殊宏的核心是If-Then-Else語句。下面是我們的條件語句序列:

If ActiveCell.Offset(0, -1) = 1 Then Sum1 = Sum1 + Cell.Value ElseIf ActiveCell.Offset(0, -1) = 2 Then Sum2 = Sum2 + Cell.Value ElseIf ActiveCell.Offset(0, -1) = 3 Then Sum3 = Sum3 + Cell.Value ElseIf ActiveCell.Offset(0, -1) = 4 Then Sum4 = Sum4 + Cell.ValueEnd If

在很大程度上,你可以猜到這些語句的作用。你可能不熟悉活動單元格偏移“不過。”活動單元格偏移(0,-1)”告訴Excel查看活動單元格左側一列的單元格。

在我們的例子中,這是告訴Excel查詢storenumber列。如果Excel在該列中找到1,則會獲取活動單元格的內容並將其添加到Sum1中。如果找到2,則將活動單元格的內容添加到Sum2中。等等。

Excel按順序遍歷所有這些語句。如果條件語句得到滿足,則完成Then語句。如果沒有,它將進入下一個ElseIf。如果它一直到最後,而且沒有任何條件得到滿足,它將不會採取任何行動。

循環和條件的組合驅動了這個宏。循環告訴Excel遍歷所選內容中的每個單元格,條件告訴Excel如何處理該單元格。

寫入單元格值

最後,我們將計算結果寫入單元格。下面是我們用來做的行:

Range("F2").Value = Sum1Range("F3").Value = Sum2Range("F4").Value = Sum3Range("F5").Value = Sum4

使用“.Value”和等號,我們將這些單元格中的每個單元格設置為其中一個變量的值。

就這樣!我們告訴Excel,我們已經用“結束子”編寫了這個子子,VBA宏已經完成。

當我們使用“開發人員”選項卡中的“宏”按鈕運行宏時,我們得到的結果是:

007Ys3FFly1goyjr4g03bj30im0axdjc

在excel中組裝vba的構造塊

當您第一次看到上面的VBA宏時,它看起來相當複雜。但在將其分解為各個組成部分之後,邏輯就變得清晰了。像任何腳本語言一樣,需要時間來習慣VBA的語法。

但通過練習,您將建立VBA詞彙表,能夠更快、更準確地編寫宏,並且比錄製宏的能力強得多。

當你陷入困境時,運行谷歌搜索是一種快速的方法,以得到你的VBA問題的答案。如果你願意深入研究它以獲得技術答案,微軟的excelvba引用可能會很有幫助。

一旦您熟悉了基本知識,就可以開始使用VBA來處理諸如從Excel發送電子郵件、導出Outlook任務和顯示PC信息之類的事情。

  • 發表於 2021-03-24 10:07
  • 閱讀 ( 47 )
  • 分類:網際網路

你可能感興趣的文章

如何將excel資料整合到word文件中

...名為total\u expenses的標籤的Caption屬性中。您需要在指令碼中編輯的只是檔案路徑和標籤名。 ...

  • 發佈於 2021-03-13 07:56
  • 閲讀 ( 44 )

5個excel巨集資源,用於自動化電子表格

...xcel先生的一個缺點是它沒有Excel論壇那樣好分類。因此,關於巨集的文章和更一般的查詢之間沒有分離。但是,您可以透過搜尋“macro”、“VBA”或其他類似的術語來輕鬆解決這個問題。 ...

  • 發佈於 2021-03-14 21:59
  • 閲讀 ( 42 )

學習和製作網路應用的7個最佳免費教程

...React的每一個細節。特別是,React頁面中的Thinking就像一個關於掌握驅動React的習慣用法的小教程。當您學習和建立自己的應用程式時,不要害怕反覆參考React文件。 ...

  • 發佈於 2021-03-15 04:58
  • 閲讀 ( 50 )

如何在excel 2016中錄製巨集

...人巨集工作簿. 新工作簿:這將使巨集可用於在現有Excel會話期間建立的任何工作簿。 此工作簿:這將使巨集僅在您開啟的工作簿中可用。 ...

  • 發佈於 2021-03-15 08:22
  • 閲讀 ( 51 )

excelvba初學者程式設計教程

...forapplicati***(VBA)是microsoftoffice程式語言,它允許您建立巨集和使用者窗體、新增訊息框、響應觸發器在文件中執行程式碼等等。有了VBA,你就可以在Excel電子表格上大顯身手了。你只要學一點編碼就行了。 ...

  • 發佈於 2021-03-17 04:40
  • 閲讀 ( 52 )

5門課程對資料科學的溫和介紹

...解你,並提供更個性化的搜尋結果。Facebook正在收集大量關於你的資訊,併為廣告商挖掘這些資訊,包括你的每一條資訊、喜歡的資訊和分享的資訊。亞馬遜利用它讓網上購物更加個性化。 ...

  • 發佈於 2021-03-17 16:12
  • 閲讀 ( 61 )

統一學習是掌握遊戲開發最簡單的方法

... 雖然當前關於Unity Learn的大部分內容是針對初學者的,但它也為經驗豐富的開發人員提供了教程。 ...

  • 發佈於 2021-03-19 21:05
  • 閲讀 ( 54 )

為初學者提供最好的線上攝影課程

...這門課程不適合以前沒有拿過相機的人,因為你需要一些關於按鈕如何工作的知識。除此之外,你還將學習在室內外拍攝家庭肖像和集體照片。 ...

  • 發佈於 2021-03-20 14:06
  • 閲讀 ( 55 )

適合初學者的最佳unity 3d教程

...。這些教程將教你一切你需要建立你的夢想遊戲!首先,關於名字的註釋。 ...

  • 發佈於 2021-03-21 15:28
  • 閲讀 ( 70 )

學習c#程式設計的7個實際原因

...開發的官方語言之一。隨著.NET核心的引入,C#現在可以用於在macOS、Linux甚至Raspberry Pi上建立應用程式。 ...

  • 發佈於 2021-03-21 18:41
  • 閲讀 ( 65 )