返回列表 上一主題 發帖

[轉貼] 如何分辨模組及全域變數呢?

[轉貼] 如何分辨模組及全域變數呢?

Q:
VBA有三種變數
區域、模組、全域變數共三種
小弟對於模組和全域變數分辨不清
不知要如何區分呢?

A:
宣告變數的基本語法如下,不知哪裡不懂?

Dim variable_name [As variable_type]
在模組層次裏以 Dim 所宣告的變數,該模組所有的程序皆可使用。
在程序層次宣告的變數,則只可在該程序中使用。

Private variable_name [As variable_type]
在模組層次中用來宣告私有變數,並配置儲存空間。
Private 變數只適用於宣告它們的模組中。

Public variable_name [As variable_type]
在模組層次中用來宣告公用變數,並配置儲存空間。
使用 Public 陳述式宣告的變數,可以在所有模組裏使用 (除非使用 Option Private Module);但會使變數只在它們所在的專案裏為公用的。
注意 Public 陳述式無法在物件類別模組裏宣告固定長度的字串變數。


提醒您,懂得學以致用比較重要,不需拘泥在名詞上。

Q:
如果我要宣告一個全域變數,
一開機這個變數就存在,
那麼我要如何宣告呢?
以下是我的寫法,不知道對不對
Public s1 As Integer
'這是在ThisWorkBook中的程序
Private Sub Workbook_Open()
   s1 = Sheet1.Range("A65535").End(xlUp).Row
End Sub

A:
你是在物件類別模組ThisWorkbook宣告變數的,
Sheet1也是物件類別模組。
如果變數要在不同的模組之間傳遞/讀取,
請在一般模組宣告公用變數。

本帖最後由 ryu0417 於 2010-11-17 13:50 編輯

感恩~
不好意思 但宣告變數後, 是否能夠將變數內容一並寫入呢!?

Ex:
在同一個模組內, 宣告myStr as Str
myStr = "超人"
想在不同sub使用myStr, 有辦法做到嗎!?

TOP

一般模組
Public Const mystr = "超人"
學海無涯_不恥下問

TOP

一般模組
Public Const mystr = "超人"
Hsieh 發表於 2010-12-1 00:38



    請問大大,這樣宣告 是否會自動為Variant資料型態????
50 字節以內
不支持自定義 Discuz! 代碼

TOP

本帖最後由 et5323 於 2010-12-1 11:07 編輯

Public Const mystr = "超人",由于没有对mystr的数据类型作出声明,mystr一定是Variant数据类型的.
可以显式地声明:Public Const mystr as string= "超人",这样mystr就是string数据类型的了.

TOP

Public Const mystr = "超人",由于没有对mystr的数据类型作出声明,mystr一定 ...
et5323 發表於 2010-12-1 11:04

那麼要宣告其他 資料型態要如何寫?(eg.Integer )
50 字節以內
不支持自定義 Discuz! 代碼

TOP

回復 6# basarasy


    Public Const i As Integer = 100
學海無涯_不恥下問

TOP

回復 7# Hsieh


    謝謝大大,又學習了.
50 字節以內
不支持自定義 Discuz! 代碼

TOP

宣告全域變數是指讓所有巨集都能用的變數的意思嗎

TOP

我很喜歡使用Public,所有的模組、函數都可以使用,很方便

除此之外,這樣可以強制自己依照適當的規則為每一個變數命一個名,

即使是程式大了,分門別類的變數名稱也比較不會感到混亂

TOP

        靜思自在 : 【是否發揮了良能?】人間壽命因為短暫,才更顯得珍貴。難得來一趟人間,應問是否為人間發揮了自己的良能,而不要一味求長壽。
返回列表 上一主題