ontime - 绕过 vba 函数中的最大字符串大小?

标签 ontime excel vba

vba 函数中字符串中可以使用的最大字符数为 255。 我正在尝试运行这个函数

Var1= 1
Var2= 2
.
.
.
Var256 =256

RunMacros= "'Tims_pet_Robot """ & Var1 & """ , """ & Var2 & """ , """   ... """ & Var256 """ '"
Runat=TimeValue("15:00:00")
Application.OnTime EarliestTime:=Runat, Procedure:=RunMacros & RunMacros2 ', schedule:=True

它在某个时间运行一个过程并向其传递一堆变量。但字符串太长。

更新: 遗憾的是我确信这不是观察窗。 另外,它实际上并不是我正在处理的字符串的最大大小。它的最大尺寸为 VBA 函数中的字符串。

例如,这个函数可以工作。

Sub test()
Dim RunAt As Date
Dim RunWhat As String

RunAt = Now + 0.00001
RunWhat = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & _
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & _
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 'that makes 254 'a''s
Application.OnTime EarliestTime:=RunAt, Procedure:="'" & RunWhat & " 12'"

End Sub


Sub aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(m As Integer)
MsgBox ("it works!" & m)
End Sub

但是如果你把 12 改成 123 它就会崩溃 示例

Sub test2()
Dim RunAt As Date
Dim RunWhat As String

RunAt = Now + 0.00001
RunWhat = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & _
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & _
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 'that makes 254 'a''s
Application.OnTime EarliestTime:=RunAt, Procedure:="'" & RunWhat & " 123'"

End Sub


Sub aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(m As Integer)
MsgBox ("it works!" & m)
End Sub

这段代码不起作用,我很确定这是因为 vba 函数无法处理超过 255 个字符的字符串。 即使您在 Excel 中调用一个函数并为其提供一个长度超过 255 个字符的字符串,它也不起作用。

尝试在单元格 A1 =vlookup("really long string", A1:Z10, 1) 中,然后将真正长的字符串放入该范围内的某个位置。 vlookup 将失败(不是找不到它,而是你实际上无法做到这一点)

此外,我知道子名称有最大长度,我就在它之下。抱歉,它看起来太丑了。

更新 2:所以我最终将变量打印到一张纸上,并获取 ontime 调用的函数以将它们从纸上读取。 :(

最佳答案

我可能在这里错过了一些东西,但为什么不能直接声明具有所需大小的字符串呢?例如,在我的 VBA 代码中,我经常使用以下内容:

Dim AString As String * 1024

提供 1k 字符串。显然,您可以在 Excel 和可用内存等的较大限制内使用任何您喜欢的声明。

在某些情况下,这可能有点低效,您可能希望使用 Trim(AString) 之类的构造来消除任何多余的尾随空格。不过,它很容易超过 256 个字符。

关于ontime - 绕过 vba 函数中的最大字符串大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2516702/

相关文章:

vba - 找到第一个空白行,然后写入它

Excel 触发宏

project-management - 准时替代品?

project-management - Axosoft OnTime 与 Countersoft Gemini

vba - 使用内置对话框时出错 "xldialogApplyNames"

JavaFX Apache POI Excel 登录程序

excel - 寻找解释 vba 类使用的引用

excel - VBA准时取消调度

excel - 如何用OnTime刷新选择?错误: Cannot run the macro

c# - 如何确定客户端计算机上 Microsoft.Office.Interop.Excel 的版本?