2016-04-29 93 views
4

在我的文件中,我有一个与汇总页面中A列中的值相对应的表名称列表。我想从每个工作表拉取单元格B6中的值,并将其粘贴到汇总表中该客户端的相应行中。我一直在尝试根据列A中的值来复制和粘贴从哪里复制和从列A的文本的值命名的工作表,但我得到一个“下标超出范围“错误在工作表(a).Range(”B6“)。复制问题。代码如下:Excel VBA-尝试根据值将值复制到汇总表中

Sub columnfiller() 
Dim i As Integer 

Dim a As String 

a = Worksheets(2).Cells(7 + i, "A").Text 

For i = 3 To Worksheets.Count 
Worksheets(a).Range("B6").Copy 
ActiveSheet.Paste Destination:=Worksheets(2).Cells(7 + i) 
Next i 
End Sub 

7 + i是对表中第一个单元格的引用。

回答

4

未经测试。我认为这是你想要的。我没有循环工作表,而是环绕着A列。

Sub columnfiller() 

Dim lastRow As Long 
Dim summaryWs As Worksheet 
Dim ws As String 

Set summaryWs = WorkSheets(2) 

With summaryWs 

    lastRow = .Cells(.Rows.count, "A").End(xlUp).Row 

    For I = 7 To lastRow 'you didn't initiate i so guessing first row is 7 

     ws = .Cells(I, 1) 
     .Cells(I, 2) = WorkSheets(ws).Range("B6") 'not sure if you need formatting. this does not have formatting 

    Next 

End With 

End Sub 
2

您正在定义a以外的循环,所以i设置为0。我猜这不是你想要的,因为在那种情况下,7 +我毫无意义。我会添加Debug.Print a以确保它被设置为正确的东西。

+0

做'7 + i'并不是毫无意义的。 '我'增量。 – findwindow

+1

肖恩是对的。 '我'不会在OP的代码中增加。好吧,它确实,但是在你为'a'设置值之后会发生这种情况。你在原代码中有几件事倒过来...... – vacip

+0

啊。 'a'应该是变化的工作表。 – findwindow