Board logo

標題: [發問] 請問在ThisWorkbook設定變數出現空白這種情況如何處理 [打印本頁]

作者: barrykuo    時間: 2014-7-2 09:33     標題: 請問在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,結果出現空白,[attach]18611[/attach]
請教這是為什麼?
謝謝各位大大耐心觀看!
作者: c_c_lai    時間: 2014-7-2 16:06

本帖最後由 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
複製代碼
如此說明不知你是否明瞭了?
作者: c_c_lai    時間: 2014-7-2 16:17

回復 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
複製代碼

作者: barrykuo    時間: 2014-7-2 17:11

回復 3# c_c_lai

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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)