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/