返回列表 上一主題 發帖

[發問] 請問在ThisWorkbook設定變數出現空白這種情況如何處理

[發問] 請問在ThisWorkbook設定變數出現空白這種情況如何處理

請教各位大大!
在ThisWorkbook裡

Sub worksheet_open()
one=99
end Sub
然後在模組裡寫下
Sub My()
Dim MyTime, MyStr, timeend

MyTime = Sheets("Sheet4").Range("C2")

MsgBox one '希望顯示one為99
MyStr = Format(MyTime, "00:00:00")
MsgBox MyStr
Sheets("Sheet4").Range("C3") = MyStr
If Sheets("Sheet4").Range("A3") > MyTime Then
timeend = ("13:45:00 > 13:44:59")
MsgBox timeend
End If

If Sheets("Sheet4").Range("A3") < MyTime Then
timeend = ("08:45:00 < 13:44:59")
MsgBox timeend
End If
End Sub
==================================
希望紅色顯示出來99,結果出現空白,
請教這是為什麼?
謝謝各位大大耐心觀看!
人生只有三天,只有活在今天最踏實

本帖最後由 c_c_lai 於 2014-7-2 16:07 編輯

回復 1# barrykuo
在你的範例中,在 ThisWorkbook 內輸入了:
  1. Sub worksheet_open()
  2.     one = 99
  3. End Sub
複製代碼
此 worksheet_open() 係為你自建的使用者函式。
在執行模組內之函式前,你必須先行執行 worksheet_open() 一次。
同時在模組內之函式前的最上端,宣告為
  1. Public one
複製代碼
或是
  1. Public one As Integer
複製代碼
明確宣告為公用整數型態。如此便能帶出正確的  one 值。
  1. 在 ThisWorkbook :
  2. Sub worksheet_open()
  3.     one = 99
  4. End Sub

  5. 在模組內:
  6. Public one As Integer

  7. Sub My()
  8.     MsgBox one   '  顯示 one 為 99
  9. End Sub
複製代碼
如此說明不知你是否明瞭了?

TOP

回復 1# barrykuo
假設你在範例中原本是想於開啟 Excel 時,系統自動地
會將 one 變數值帶入 99 的數值。那此時你必須將原本
輸入的 worksheet_open() 函示,改換成:
  1. Private Sub Workbook_Open()
  2.     one = 99
  3. End Sub
複製代碼
它是 Excel 本身的內在函式,於開啟 Excel 時便會自動執行。
至於模組的公用變數宣告則維持不動。
  1. Public one As Integer

  2. Sub My()
  3.     MsgBox one   '  顯示 one 為 99
  4. End Sub
複製代碼

TOP

回復 3# c_c_lai

謝謝C_C_lai大大您的解釋,
第一
原來我打錯了,不是worksheet_open(),應該是workbook_open(),
第二
Public宣告用法經過大大指導懂了一點。所以所有的變數最好都需要宣告比較好。
感謝!感謝!感謝!
人生只有三天,只有活在今天最踏實

TOP

        靜思自在 : 君子立恆志,小人恆立志。
返回列表 上一主題