Filed under: Excel VBA 範例, 一般程序

OnTime 方法傳遞參數的方法

by chijanzen on 九月 5th, 2008 | View: 3,431 views

Tags
  • No Tags
Share Comments (7)
索   引 H0054
主   題 OnTime 方法傳遞參數的方法
版   本 >= 9.0(Office 2000)
說   明 OnTime 方法中的 Procedure 語法在Excel內建的說明並沒有提到如何使用參數,但是實際上它是可以使用參數的,請看內文說明
參   考

 

說明:OnTime 方法 中的 Procedure 語法傳遞參數的方法:

    .OnTime [EarliestTime]、[["]['][合法的巨集名稱(Sub)][參數][,][參數1][,][參數2][,]….
[']["
]]、...


  
範例一:

 

複製以下程式碼到Module

 


Sub MySchedule()
    '5秒後調用GetArgSample程序
    Application.OnTime Now + TimeValue("00:00:05"), "'GetArgSample""小計為:"",123'"
End Sub


Sub GetArgSample(Arg As String, Arg1 As Integer)
    MsgBox Arg & Arg1 * 30
End Sub

 

 

說明:

 "'GetArgSample""小計為:"",123'"


     ["]['][合法的巨集名稱(Sub)][參數][,][參數1][']["]

     參數如果為文字記得要加 "" 號,如果是數字就不用加

 

                         
檔案下載

Popularity: 7%

About the Author
    網路化名: chijanzen、中國龍、邪兵衛 經歷: 第二屆微軟社群之星 第三屆微軟「最有價值專家」 第五屆微軟「最有價值專家」
Leave a Comment »7 Comments
  • Reply » hsieh 十一月 11, 2009

    原來會被默認為數值而非字串
    多謝版主費心教導
    謝謝!

  • Reply » chijanzen 十一月 11, 2009

    你好:
    再加一句判斷是否為數值或文字即可
    Private Sub Workbook_Open()
    With Sheet1
    For Each a In .Range(.[A2], [A65536].End(xlUp))
    mytime = a + a.Offset(, 1)
    t = a.Offset(, 2)
    If VBA.IsNumeric(t) Then
    mystr = "'Meeting " & t & "'"
    Else
    mystr = "'Meeting " & Chr(34) & t & Chr(34) & "'"
    End If
    Application.OnTime Now + TimeValue("00:00:05"), mystr
    Next
    End With
    End Sub

  • Reply » hsieh 十一月 11, 2009

    版主您好
    謝謝您的回應
    但我依照您的方法還是出現同樣錯誤
    是因為a.Offset(, 2)的值為文字的關係嗎?
    我能附上檔案給您參考嗎?
    我該如何將檔案附上給您參考呢?
    謝謝您!

  • Reply » chijanzen 十一月 10, 2009

    你好:
    你試試看
    Private Sub Workbook_Open()
    With Sheet1
    For Each a In .Range(.[A2], [A65536].End(xlUp))
    mytime = a + a.Offset(, 1)
    mystr = "'Meeting" & a.Offset(, 2) & "'"
    Application.OnTime mytime, mystr
    Next
    End With
    End Sub

  • Reply » hsieh 十一月 10, 2009

    版主您好
    我在sheet1
    a欄為日期,b欄為時間,C欄為訊息文字
    我想在檔案開啟時加入各個行事曆提醒
    我在open事件
    Private Sub Workbook_Open()
    With Sheet1
    For Each a In .Range(.[A2], [A65536].End(xlUp))
       mytime = a + a.Offset(, 1)
       mystr = """'Meeting""""" & a.Offset(, 2) & "'"""
       Application.OnTime mytime, mystr
    Next
    End With
    End Sub
    在一般模組寫入程序
    Sub Meeting(msg As String)
    MsgBox msg
    End Sub
    但open程序即出現找不到該程序的錯誤訊息
    還請版主撥冗解惑
    謝謝!

  • Reply » chijanzen 十一月 10, 2009

    可以把你完整的程式碼貼上來嗎

  • Reply » hsieh 十一月 9, 2009

    請教版主:
    如果引數要加入變數是否可行

    Sub MySchedule()
        '5秒後調用GetArgSample程序
    參數1="小計為:"
    參數2=123

        Application.OnTime Now + TimeValue("00:00:05"), 此處的程序應如何呼叫
    End Sub
    我把程序名&參數1&參數2串成另一變數代入
    結果會找不到該程序
    還請版主賜教
    謝謝

Get a GravatarLeave a Reply

Name: « Required

Email Address: « Required

Website URL: « Optional

You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

About me
chijanzen 分享個人Excel VBA 學習經驗,架站心得, 日常生活記事等...

Add to Google

分類
Translator
Chinese (Simplified) flagItalian flagKorean flagEnglish flagGerman flag
French flagJapanese flagRussian flagBulgarian flagFinnish flag
相簿