通过不同的表循环导入

时间:2019-09-12 21:07:58

标签: excel vba

我是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的知识。但是只要能用就可以了。

1 个答案:

答案 0 :(得分:0)

使用Index

代替工作表的名称

示例:Sheet(1)Sheet(2)

您可以将该数字用作可以递增的变量。

示例:

Dim i as Integer
Sheet(i).Select

注意:

更好的做法是更改代码以不依赖.Select,因为它可能会引起混乱和问题。

此外,最好使用Worksheet(1),因为图表也可以称为工作表。