Excelvariables
我有以下代码:
Sub Strukturkopieren() Dim TZahl As Integer Dim GZahl As Integer Dim MaxZahl As Integer Dim i As Integer Dim j As Integer Dim j2 As Integer Dim g As Integer Dim Startp As Integer Dim Startp2 As Integer MaxZahl = Worksheets("Control").Cells(2, 2).Value For i = 1 To 20 j = 2 * i j2 = j - 1 TZahl = Worksheets("Control").Cells(12, j).Value For g = 1 To TZahl Startp = GZahl * 2 + 1 + (g - 1) * 2 Startp2 = Startp + 1 Set varRangeselect1 = Worksheets("Control").Range(Cells(13, j2), Cells(2013, j)) Set varRangeSelect2 = Worksheets("Structures").Range(Cells(2, Startp), Cells(2002, Startp2)) varRangeselect1.Copy varRangeSelect2.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False Next g GZahl = TZahl + GZahl Next i End Sub
我试图复制一组结构给定的时间量(MaxZahl)到另一个工作表。 VBA给我一个1004错误,并指向线:
Set varRangeselect1 = Worksheets("Control").Range(Cells(13, j2), Cells(2013, j))
我是否声明了一个variables是错误的?
当你使用多个工作表时,你应该明确使用Range() and Cells()
,所以VB知道使用哪个工作表。
所以为你的线路
Set varRangeselect1 = Worksheets("Control").Range(Cells(13, j2), Cells(2013, j)) Set varRangeSelect2 = Worksheets("Structures").Range(Cells(2, Startp), Cells(2002, Startp2))
你应该做:
Set varRangeselect1 = Worksheets("Control").Range(Worksheets("Control").Cells(13, j2), Worksheets("Control").Cells(2013, j)) Set varRangeSelect2 = Worksheets("Structures").Range(Worksheets("Structures").Cells(2, Startp), Worksheets("Structures").Cells(2002, Startp2))
或者,使用With
(我个人喜欢的方法,因为它缩短了一些代码):
With Worksheets("Control") Set varRangeselect1 = .Range(.Cells(13, j2), .Cells(2013, j)) End With With Worksheets("Structures") Set varRangeSelect2 = .Range(.Cells(2, Startp), .Cells(2002, Startp2)) End With
(注意:使用With
,你只需要在Range()
和Cells()
)之前使用一个句点( .
),因为VB明白这意味着你想用With
之后的任何东西,在这种情况下Worksheets("Control")
和Worksheets("Structures")
。
你现在怎么做,VB看到你想在“控制”和“结构”工作表中使用范围,但是当它试图确定你正在使用什么Cells
,不知道你想要什么样的表单。有道理?