返回列表 上一主題 發帖

public 變量的值可以維持多久?

public 變量的值可以維持多久?

標準模組宣告public X,標準模組一個巨集"Macro1"里給X賦值X=123.
就是不知道,x=123這個值,維持到什麼時候呢?
lmh

標準模組宣告public X,標準模組一個巨集"Macro1"里給X賦值X=123.
就是不知道,x=123這個值,維持到什麼時候呢 ...
mhl9mhl9 發表於 2018-8-17 21:25

我為什麼會發問這個奇怪的問題?公用變數"public X"和局部變數"static X",只要不關閉這個文件,X會始終保持它的值.
但我測試多次偶然,X="",測試結果是:工作簿里任何程序出錯,你選擇"退出程序",導致X="".
有問各位大大,我的理解對不對?
lmh

TOP

任何觸使 VBA Code 重新被編譯的動作 , x 值就會消失

或 檔案被關閉

TOP

回復 2# mhl9mhl9
yes

TOP

標準模組宣告public X,標準模組一個巨集"Macro1"里給X賦值X=123.
就是不知道,x=123這個值,維持到什麼時候呢 ...
mhl9mhl9 發表於 2018-8-17 21:25

我為什麼會發問這個奇怪的問題?公用變數"public X"和局部變數"static X",只要不關閉這個文件,X會始終保持它的值.
但我測試多次偶然,X="",測試結果是:工作簿里任何程序出錯,你選擇"退出程序",導致X="".
有問各位大大,我的理解對不對?
做文件,常常會需要某個變量維持一個固定的值,如 public X,又如static X,又如property get X,一旦X被賦值,文件不關閉,X值始終會保持.
但有例外,就是文件里任何程式出錯,你又沒有處理"除錯",結果上述變量X就變成"空值",導致需要X值的程序都報錯!
我現在想到的解決方法(1)用on error goto linex,讓程式跳過錯誤就end sub,這樣做X值會保持(2)在on error goto linex後面重新給X賦值.
有問各位大大,我的理解對不對?
文件做了不少,上述情況今天才發覺,難怪文件莫名其妙報錯,原來原因之一就在這兒.
lmh

TOP

回復 5# mhl9mhl9

測試多次偶然,X="",測試結果是:工作簿里任何程序出錯,你選擇"退出程序",導致X="".

   附上檔案看看程式碼.
可試試定義名稱,檔案關閉後指定的值還是存在.
  1. Option Explicit
  2. Private Sub Workbook_Open()
  3.     Dim N, Msg As Boolean
  4.     For Each N In Names
  5.         If N.Name = "Gbkee" Then Msg = True: Exit For
  6.     Next
  7.     If Msg = False Then Names.Add "Gbkee", Date, False
  8.     EX
  9. End Sub
  10. Sub EX()
  11.     MsgBox CDate([gbkee])
  12. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 5# mhl9mhl9


    我用過2種方式去給一個需要保存賦值的變數:
1. 如 GBKEE大大 的方式 設定定義名稱
2. 既然是在 EXCEL 內使用,就在可能不會用到的遠處儲存格記起來

TOP

本帖最後由 stillfish00 於 2018-8-20 17:05 編輯

回復 2# mhl9mhl9
static 是靜態變數,跟局部變數又是不一樣的。

公用變數Public X 的值設定後會維持到甚麼時候?
就我所知除了關閉excel外,下面任一種都會將公用變數清除:
1. code 中有執行到  End
2. 按了重新設定這按鈕
   
擷取1.PNG
2018-8-20 16:53

3. 偵測到錯誤時按了結束
   
擷取2.PNG
2018-8-20 16:57


除了定義名稱,若你要賦予變數的值是不需要改變的,可以改用常數
如 Public Const X=123
表達不清、題意不明確、沒附檔案格式、沒有討論問題的態度~~~~~~以上愛莫能助。

TOP

        靜思自在 : 太陽光大、父母恩大、君子量大,小人氣大。
返回列表 上一主題