Application.OnTime的多个变量参数

sol*_*emn 6 excel ontime vba excel-vba

我正在研究Excel 2010的数据采集前端.我无法弄清楚传递多个局部变量参数的语法Application.OnTime.

http://markrowlinson.co.uk/articles.php?id=10为单个变量作为参数提供了一个很好的例子,但是对于如何将其推断为多个变量的解释我并不清楚.

有没有人在传递多个局部变量参数时有正确的嵌套"'字符的简明解释?

编辑:代码示例如下:Application.OnTime Now + TimeSerial(0, 0, 5), "'runScheduledReport """ & iArg1 & "","" & iArg2 & "" "" & iArg3 & "" ""'".我知道我们在字符串中使用双引号作为转义字符,但无法确定传递的字符串的顺序.

Hol*_*ing 8

你必须考虑以下约束:

  • 要调用的宏必须驻留在模块中.当你想从另一个工作簿中调用它时,它必须是公共的.
  • 您不能像使用函数或带参数的子函数那样使用括号来调用宏.使用括号时,Excel会抱怨宏不存在
  • 我没有尝试过函数,但无论如何都没有人可以使用返回值,所以将方法定义为sub.
  • 你必须使用aposthophs来封装宏名称
  • 你必须使用引号来封装字符串和日期值,或者使用chr $(34)(让我想起旧时代)或者只是加倍引号
  • 你可以通过没有引号的整数,我没有尝试双打
  • 用逗号分隔参数
  • 参数的顺序必须与方法中参数的顺序相匹配

查找附加代码:

Option Explicit

Sub Test()
    Dim strTest1 As String
    Dim strTest2 As String

    strTest1 = "This is test1"
    strTest2 = "This is test2"

    Application.OnTime Now + TimeSerial(0, 0, 1), "'CallMeOnTime """ & strTest1 & """,""" & strTest2 & "'"
    Application.OnTime Now + TimeSerial(0, 0, 1), "'CallMeOnTime " & Chr$(34) & "Test" & Chr$(34) & "," & Chr$(34) & "Test" & Chr$(34) & "'"
    Application.OnTime Now + TimeSerial(0, 0, 1), "'CallMeOnTime2'"
End Sub
Public Sub CallMeOnTime(strTest1 As String, strTest2 As String)
    MsgBox ("test1: " & strTest1 & " test2:" & strTest2)
End Sub

Public Sub CallMeOnTime2()
    MsgBox ("CallMeOnTime2")
End Sub
Run Code Online (Sandbox Code Playgroud)

  • 感谢 (+) 提供完整的示例!但是你写了“当你想从另一个工作簿调用它时,它必须是公开的” - **不是这样**!如果你想设置参数,被调用的函数必须是 **public,即使在同一个模块中**(我花了 2 个小时来理解它)接下来......文本`Now + TimeSerial(0, 0, **1**)` 有点多余。我知道 - 都写这个。但足够的是`Now + TimeSerial(0, 0, **0**)`。此外 - 这个例子适用于我,即使是这样的:`Application.OnTime Now, "'CallMeOnTime """ & strTest1 & """,""" & strTest2 & "'"` (2认同)