我是VBA的新手,但仍然受命使用它。因此,我的任务是构建一个宏,该宏从不同的工作表中获取数据,并将其放在一个结果表中(在我的示例中为“ Tabelle1”)。每张工作表中的输入数据都存储在两列的块中,彼此相邻-因此列A和B必须先导入结果表,然后再输入C和D等等。只需一张纸就可以做到这一点:
Sub Makro1()
'
' Makro1 Makro
'
Dim Erste As Long
Dim k As Long
Dim j As Long
k = 1
j = 2
Do
Sheets("Tabelle1").Select
Erste = ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Offset(1, 0).Row
Sheets("Tabelle2").Select
Range(Cells(5, k), Cells(5, j)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Tabelle1").Select
Cells(Erste, 3).Select
ActiveSheet.Paste
k = k + 2
j = j + 2
Loop Until Sheets("Tabelle2").Cells(4, k).Value = ""
End Sub
但是我不仅有一个输入表(在此示例中为“ Tabelle2”),还有多个输入表(直到sheet20左右)。它们都是以完全相同的方式构建的,但每个模型中仅包含不同的数据。我需要做的宏是,当到达第一个输入表(“ Tabelle2”)中的空白单元格时,转到下一个输入表(“ Tabelle3”)并继续导入数据。
一开始听起来并不难,但是我似乎找不到解决方案。如果有人可以帮助我,将不胜感激:-)
我知道宏本身写得很差,我可以摆脱大部分Select
的知识。但是只要能用就可以了。
答案 0 :(得分:0)
使用Index
示例:Sheet(1)
和Sheet(2)
等
您可以将该数字用作可以递增的变量。
示例:
Dim i as Integer
Sheet(i).Select
注意:
更好的做法是更改代码以不依赖.Select
,因为它可能会引起混乱和问题。
此外,最好使用Worksheet(1)
,因为图表也可以称为工作表。