了解 Excel 宏中的變量和常量

在本文中,您將了解宏中的常量和變量是什麼,它們可以在哪裡使用,以及不同數據類型之間的主要區別是什麼。 它還將揭示為什麼需要常量,如果你可以只寫一個變量而不改變它。

與其他編程語言一樣,數據可以存儲在變量或常量中(這兩者通常也稱為數據容器)。 這是這些概念之間的主要區別。 前者可能會根據程序中發生的情況而改變。 反過來,常量被設置一次並且不會改變它們的值。

如果您需要多次使用相同的大值,常量會很有用。 您可以簡單地寫下常量的名稱,而不是複制數字。 例如,您可以使用常量“Pi”來存儲 Pi,它是一個常量值。 它很大,每次都很難寫,也很難搜索複製。 因此,寫兩個字符就足夠了,環境會自動使用所需的數字。

Excel 用戶如果需要不時更改其中存儲的值,則需要聲明變量。 例如,您可以設置一個名為 sVAT_Rate 的變量,它將存儲產品的當前增值稅率。 如果它發生變化,您可以快速更正它。 這對於在美國開展業務的人特別有用,在美國,某些商品可能根本不需要繳納增值稅(而且這種稅也因州而異)。

數據類型

每個數據容器可以是多種類型之一。 下表描述了處理信息的標準類型。 它們中有很多,而且初學者最初可能會認為它們相互重複。 但這是一種虛幻的感覺。 繼續閱讀以了解為什麼指定正確的數據類型如此重要。

不建議為小數字使用佔用更多內存空間的數據類型。 例如,對於數字 1,使用 Byte 類型就足夠了。 這將對可執行模塊的性能產生積極影響,尤其是在弱計算機上。 但重要的是不要在這裡走得太遠。 如果您使用的數據類型過於緊湊,則可能無法容納過大的值。

聲明常量和變量

強烈建議不要在沒有事先聲明的情況下使用數據容器。 然後可能會出現一些問題,為避免這些問題,有必要編寫幾行帶有變量或常量枚舉的代碼。

要聲明變量,使用 Dim 語句。 例如,像這樣:

將變量名變暗為整數

Variable_Name 是變量的名稱。 接下來,編寫 As 運算符,指示數據類型。 您可以插入自己的名稱和數據類型,而不是字符串“Variable_Name”和“Integer”。

也可以聲明常量,但您必須首先指定它們的值。 選項之一是:

常量 iMaxCount = 5000

公平地說,在某些情況下您可以不聲明變量,但在這種情況下,它們將自動被分配類型 Variant。 但是,不建議這樣做,原因如下:

  1. 變量的處理速度要慢得多,如果有很多這樣的變量,信息處理在弱計算機上會顯著減慢。 似乎那幾秒鐘將決定? 但是,如果您必須編寫大量代碼行,然後還要在性能較弱的計算機上運行它(考慮到現代辦公套件需要大量 RAM,這些計算機仍在銷售),您可以完全停止工作。 在某些情況下,錯誤地編寫宏會導致具有少量 RAM 且並非旨在執行複雜任務的智能本凍結。 
  2. 名稱中的打印錯誤是允許的,這可以通過使用 Option Explicit 語句來防止,該語句允許您找到未聲明的變量(如果找到)。 這是一種檢測錯誤的簡單方法,因為最輕微的拼寫錯誤都會導致解釋器無法識別變量。 而且,如果您打開變量聲明模式,如果發現未在模塊一開始就聲明的數據容器,解釋器將根本不允許您運行宏。
  3. 避免變量值與數據類型不匹配導致的錯誤。 通常,將文本值分配給整數變量會引發錯誤。 是的,一方面,泛型類型是在沒有聲明的情況下分配的,但是如果提前聲明它們,則可以避免隨機錯誤。

因此,無論如何,強烈建議在 Excel 宏中聲明所有變量。

在聲明變量時,還要記住一件事。 聲明變量時可以不為變量分配任何值,但在這種情況下,它會獲取默認值。 例如:

  1. 行變為空。
  2. 數字取值為 0。
  3. 布爾類型的變量最初被認為是假的。
  4. 默認日期為 30 年 1899 月 XNUMX 日。

例如,如果之前沒有指定值,則不需要將值 0 分配給整數變量。 她已經包含了這個號碼。

選項顯式聲明

此語句允許您聲明 VBA 代碼中使用的所有變量,並在代碼運行之前確定是否存在任何未聲明的容器。 要使用此功能,只需在宏代碼的最頂部編寫一行 Option Explicit 代碼。

如果您每次都需要在代碼中包含此語句,您可以使用 VBA 編輯器中的特殊設置來實現。 要啟用此選項,您必須:

  1. 沿著路徑進入開發環境——工具>選項。
  2. 在此之後打開的窗口中,打開編輯器選項卡。
  3. 最後,選​​中 Require Variable Declaration 項旁邊的框。

完成這些步驟後,單擊“確定”按鈕。 

就是這樣,現在在編寫每個新宏時,此行將自動插入代碼頂部。

常量和變量的範圍

每個變量或常量只有一個有限的範圍。 這取決於你在哪裡聲明它。

假設我們有一個函數 總消耗(), 它使用變量 增值稅稅率. 根據模塊中的位置,它將具有不同的範圍:

Option Explicit

將 sVAT_Rate 調暗為單一

函數 Total_Cost() 作為 Double

.

.

.

函數結束

如果在模塊本身的頂部聲明了一個變量,它將在整個模塊中傳播。 也就是說,它可以被每個過程讀取。

此外,如果其中一個程序改變了變量的值,那麼下一個程序也會讀取這個更正後的值。 但是在其他模塊中這個變量仍然不會被讀取。

Option Explicit

函數 Total_Cost() 作為 Double

將 sVAT_Rate 調暗為單一

   .

   .

   .

函數結束

在這種情況下,變量是在過程中聲明的,如果在另一個過程中使用,解釋器會拋出錯誤。

如果您希望變量被其他模塊讀取,您必須使用 Public 關鍵字而不是 Dim 關鍵字。 同樣,您可以使用 Public 語句將變量的範圍限制為僅當前模塊,而不是 Dim 一詞。

可以類似的方式設置常量的作用域,只不過這裡的關鍵字是和Const運算符一起寫的。

這是一個表格,其中有一個很好的示例,說明了它如何處理常量和變量。

Option Explicit

公共 sVAT_Rate 為單身

公共常量 iMax_Count = 5000

在此示例中,您可以看到如何使用 Public 關鍵字來聲明變量,以及在 Visual Basic 編輯器中需要編寫什麼來聲明公共常量。 這些值容器的範圍適用於所有模塊。
Option Explicit

私人 sVAT_Rate 為單身

私有常量 iMax_Count = 5000

在這裡,變量和常量是使用 Private 關鍵字聲明的。 這意味著它們只能在當前模塊中看到,其他模塊中的程序不能使用它們。

為什麼需要常量和變量

常量和變量的使用可以增加代碼的可理解程度。 如果初學者一般對為什麼需要變量沒有疑問,那麼關於常量的需要就會有很多歧義。 乍一看,這個問題似乎很合乎邏輯。 畢竟,您可以聲明一個變量,然後再也不更改它。

事實證明,對於佔用大量內存空間的數據類型的使用,答案在同一平面上。 如果我們正在處理大量變量,我們可能會意外更改現有容器。 如果用戶規定某個值永遠不會改變,那麼環境會自動控制這一點。

當宏由多個程序員編寫時,這一點尤其重要。 人們可能知道某些變量不應該改變。 而另一個不是。 如果您指定 Const 運算符,其他開發人員將知道該值不會更改。

或者,如果有一個名稱相同的常量,而該變量具有不同但相似的名稱。 開發人員可以簡單地混淆它們。 例如,一個不需要更改的變量稱為Variable11,另一個可以編輯的變量稱為Variable1。 一個人在編寫代碼時會自動跳過一個額外的單元而沒有註意到它。 結果,值的容器將被更改,不應觸摸。

或者開發人員自己可能會忘記哪些變量他可以觸及,哪些他不能觸及。 這種情況經常發生在代碼寫了幾個星期,並且代碼變大的時候。 在此期間,很容易忘記這個或那個變量的含義。

是的,您可以在這種情況下使用註釋,但是指定單詞 Const 不是更容易嗎?

結論

變量是宏編程的重要組成部分,它允許您執行複雜的操作,從計算到通知用戶某些事件或在電子表格的單元格中指定特定值。

如果開發人員確定這些容器的內容將來不會改變,則應該使用常量。 建議不要改用變量,因為可能會不小心出錯。

發表評論