Số tối đa của nhân vật bạn có thể sử dụng trong chuỗi trong một hàm VBA là 255. Tôi cố gắng để chạy chức năng nàyBắt xung quanh kích thước chuỗi tối đa trong một hàm vba?
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
Nó chạy một thủ tục tại một thời điểm nhất định và vượt qua một loạt các biến để nó . nhưng chuỗi quá dài.
Cập nhật: Đáng tiếc là tôi chắc chắn đó không phải là cửa sổ xem. Ngoài ra, nó không thực sự là kích thước tối đa của một chuỗi mà tôi đang xử lý. Đó là kích thước tối đa của một chuỗi trong hàm vba.
Ví dụ: chức năng này hoạt động.
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
Nhưng nếu bạn thay đổi 12-123 nó phá vỡ Ví dụ
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
Mã này không làm việc, tôi khá chắc chắn đó là vì một hàm VBA không thể xử lý một chuỗi với hơn 255 chars. Ngay cả khi bạn đang ở trong Excel và gọi một hàm và cho nó một chuỗi dài hơn 255 ký tự nó không hoạt động.
Hãy thử trong ô A1 = vlookup ("chuỗi dài thực sự", A1: Z10, 1) và sau đó đặt chuỗi dài thực sự ở đâu đó trong phạm vi đó. Các vlookup sẽ thất bại (không tìm thấy nó, nhưng bạn sẽ không thực sự có thể làm điều đó)
Ngoài ra tôi biết rằng có một chiều dài tối đa cho một tên phụ, tôi chỉ dưới nó. Xin lỗi vì nó trông rất xấu xí.
Cập nhật 2: vì vậy tôi vừa kết thúc in biến đó thành một trang tính và nhận hàm được gọi là ontime để đọc chúng khỏi trang tính. :(
[Từ Joel Spolsky] (http://www.joelonsoftware.com/articles/fog0000000319.html) (người đã dẫn đầu nhiều phát triển Excel ban đầu): "Excel sử dụng chuỗi Pascal nội bộ, đó là lý do tại sao chuỗi ở nhiều vị trí trong Excel được giới hạn ở 255 byte, và nó cũng là một lý do Excel rất nhanh. " Điều đó có thể áp dụng cho vấn đề VLookup mà bạn đề cập, mặc dù những người khác đã nói, VBA không có giới hạn như vậy. – mwolfe02
Bạn có thể sử dụng 'Chuỗi (number_of_repeats, char_to_repeat)' để tạo chuỗi thay vì 'aaaaaaaaaaaaaaaaaaaaaaaaaaa ...' –