嗨,我是VBA的新手,我遇到了这个奇怪的错误,它会通过一个几乎每次都执行相同操作的循环而四分之一。
Sub tabele_to_database()
Dim ws As Worksheet
Dim Countries As New Collection
Dim things As New Collection
Dim Row As Boolean
Dim Coloum As Boolean
Dim i As Integer
Dim a As Integer
Set ws = ThisWorkbook.Sheets.Add(After:= _
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
Row = True
Coloum = True
i = 2
While Row
Countries.Add Sheets("payment terms").Cells(1, i).Value
i = i + 1
If IsEmpty(Sheets("payment terms").Cells(1, i)) Then
Row = False
End If
Wend
i = 2
While Coloum
things.Add CStr(Sheets("payment terms").Cells(i, 1).Value)
i = i + 1
If IsEmpty(Sheets("payment terms").Cells(i, 1)) Then
Coloum = False
End If
Wend
a = 1
For Each thing In things
For Each Country In Countries
ws.Cells(1, a) = (thing + " " + Country)
a = a + 1
Next Country
Next thing
End Sub
错误在
ws.Cells(1, a) = (thing + " " + Country)
整个过程大约四分之一。
变量为a = 257,这是它打印的列数 事情是第7排的东西,第36的国家是乡村,所以一切都很好
我知道事情不是好名字,但我在实习,对大多数事情一无所知。
这是工作,但我在实习,所以我一无所知,为此我“学习”了VBA。
预先感谢
答案 0 :(得分:2)
尝试一下:
QDockWidget
将设置变量与字符串连接时,需要使用 ws.Cells(1, a) = (thing & " " & Country)
而不是&
编辑:正如Vityata所指出的那样,这是一个不错的提示,但是并不能解决当前的问题。
答案 1 :(得分:0)
像这样更改代码:
For Each thing In things
For Each Country In Countries
Debug.Print things + " " + Country
ws.Cells(1, a) = thing + " " + Country
a = a + 1
Next Country
Next thing
因此,您将看到导致错误的确切原因。按 Ctrl + G 查看日志。
+
不是一个很好的串联符号,但是如果thing
和Country
都是数字,则它可能“起作用”。 VBA中正确的串联是与&
一起使用。
另一个可能的错误是使用Integer
-为了确保vba的安全,请使用long。
答案 2 :(得分:0)
在旧的Excel版本上,列的上限为250个左右