我們知道了什麼是變數。也就可以理解知道了拿醬油瓶,裡面有醬油。那麼問題來了,你拿誰家的醬油瓶呢?是自己家的,還是隔壁老王家的?這就涉及到了變數的作用域。
變數的宣告很簡單,就是告訴計算機,這個變數是存放什麼型別的資料,也可以理解為這個空瓶子裡面裝醬油還是白醋。我們詳細的來聊一聊作用域。
作用域,可以理解為變數可以使用的範圍吧,就是在**可以使用這個變數。比如我在a的excel中使用了變數age,但是我在b的excel中直接使用age是不可以的,這就涉及到了作用域的概念。
作用域包括:
單個過程,在乙個過程也可以理解是乙個函式中使用dim或者static語句宣告的變數,這裡static是靜態的意思,就是說這個變數一旦宣告了就不可變,比如身份證,乙個人對應乙個身份證不可以變。
單個模組,在模組的第乙個過程之前使用dim或者private語句宣告的變數,可以在這個模組內所有的過程中使用。
所有模組,在乙個模組的第乙個過程之前使用public語句宣告的變數,作用域為所有模組,這樣所有的模組都可以引用(使用它)。
option
explicit
public a3 as
string
'所有模組可以使用的變數
dim a1 as
string
'模組內可以使用的變數
public
sub myfirstvba()
' 第乙個vba程式
msgbox "hello vba"
endsub
public
sub f1()
dim a as
string
'過程內的變數'
a = "啊哈哈"
let a1 = "hello(*@ο@*) 哇~"
range("a1").value = a1
endsub
這裡就可以看出,f1這個過程中的a變數,只有在f1中可以使用。然後f1中也可以使用a1,和a3的變數,這樣你執行一下f1就可以發現a1這個單元格已經被更改了。
我們在f1中還使用了let a1 = 「hello(@ο@) 哇~」這是給變數賦值的語句,就是說這個a1的容器放什麼東西,當然let可以省略,寫著原因的是為了跟下文的給物件賦值使用set作為區分。
總結,我們上述操作是在模組1中進行的,為了證明public的變數可以在所有模組中進行使用,那麼我們建立模組2.
執行a1後的結果為
step 1:如圖在模組上右鍵,選擇「插入」,然後新建模組。
step 2:在新建的模組中定義乙個方法叫module,然後使用a3這個變數。
step 3:執行一下module這個方法可以看到a2被我們更改了
我們現在就可以簡單的掌握了作用域。也就是說知道這個容器都在**生效了。
VBA教程初級(七) 陣列的其他操作
陣列的使用是很頻繁的,下面介紹兩種常用的使用陣列的方法。首先利用split 使用split函式建立陣列 public sub pss split dim arr as variant 利用split建立陣列 arr split 鄧肯 科比 麥迪 msgbox arr第二個元素為 arr 1 ends...
宣告變數 VBA宣告的變數為何在其他模組無法使用?
我們有時需要跨模組使用同乙個變數,那麼為什麼會出現無法使用的情況呢?這時就需要我們在宣告變數的時候,提前確認好變數的作用域。變數的作用域 如何定義變數的作用域 首先,介紹一下我們作用域的概念。變數的作用域標誌著我們可以在哪些地方使用這個變數。變數分為3種作用域 1 單個過程 在乙個過程中宣告的變數,...
變數的定義與宣告
1 變數的定義 從前面的章節可以看出,程式中所有的東西幾乎都有名字。然而字面量卻是個例外,它沒有名字。那麼使用變數,我們就可以為某個值取名字了。實際上,我們是為系統記憶體中用於儲存資料的某塊空間取名字。ansi c規定 變數必須 先定義 後使用 因此當用c定義變數時,不僅需要指定變數名,而且還必須告...