gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:25:48 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com