So wählen Sie einen Bereich von Zeilen mit zwei Variablen in VBA

Ich bin ganz neu in VBA und versuche zu schreiben, ein makro zu ziehen spezifischen Daten aus allen Arbeitsmappen im selben Verzeichnis in eine master-Arbeitsmappe. Ich bin immer stecken, wenn Sie versuchen, wählen Sie einen Bereich von Daten mithilfe von Variablen, so dass ich kopieren und einfügen der Daten in die master-Arbeitsmappe. Ich habe das anschauen von videos und das Lesen durch die Foren, aber kann nicht scheinen, um das makro zu arbeiten.

Ich habe ein Excel-sheet, dass die Listen, die Mitarbeiter in Spalte A mit allen Daten die ich kopieren möchten, über die Mitarbeiter in den Spalten B, C, D, E und F (in den nachfolgenden Zeilen). So zum Beispiel Zeile 1 enthält die ersten Mitarbeiter in die Zelle A1, und dann die Zeilen 2 bis 5 enthält die Daten in den Spalten B bis F. Zeile 6 enthält die nächste Mitarbeiternamen in die Zelle A6, und die Daten, die über Ihnen wohnt in den Zeilen 7 bis 9 (Spalten B-F). Ich möchte zum kopieren von Zeilen 2-5 und fügen Sie Sie in die master-Arbeitsmappe, und kopieren Sie dann 7-9 und einfügen in master, 8-14, und so weiter und so Fort.

Mein Erster Versuch war, um zu definieren, von zwei Variablen als ganze zahlen. Dann habe ich versucht zu finden, die den Namen des ersten Mitarbeiters, in Spalte A und wählen Sie der Reihe nach, und setzen Sie die erste variable gleich, die Zeile. Dann finden Sie den Namen des zweiten Mitarbeiters, wählen Sie die Zeile vor und setzen Sie die variable 2 gleich Zeile. Dann wählen Sie den Bereich mithilfe dieser beiden Variablen. Hier ist, was mein code sieht wie folgt aus:

Sub SelectConsultantData()
Dim Consultant1 As Integer, Consultant2 As Integer
Dim ConsultantRange As Range

    Columns("A:A").Select
    Selection.Find(What:="Andrew", After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    Consultant1 = Rows(ActiveCell.Row).Select
    Consultant1 = Consultant1 + 1
    Columns("A:A").Select
    Selection.Find(What:="Bob", After:=ActiveCell, LookIn:=xlValues, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    Consultant2 = Rows(ActiveCell.Row).Select
    Consultant2 = Consultant2 - 1
    Set ConsultantRange = Range(Consultant1, Consultant2).Select

End Sub

Irgendeine Idee, was ich falsch mache, oder kann jemand denke, einen besseren Ansatz? Auch bitte lassen Sie mich wissen, wenn ich brauche, um weitere Kontext.

Vielen Dank im Voraus für jede Hilfe.

  • Erste, was Ihre Consultant1 & 2 Variablen deklariert werden müssen, als Bereich. Zweitens bedeutet die Struktur bleibt überall gleich...z.B. der name in A1, gefolgt von Informationen, die in B2:F5?
  • Ja, die Struktur bleibt überall gleich. Das einzige was sich ändert ist die Anzahl der Zeilen unter jedem einzelnen Mitarbeiter. So der erste name des Mitarbeiters ist in A1, Informationen für die Mitarbeiter in B2:F5 (4 Zeilen), Mitarbeiter 2 name ist in A6, Informationen in B7:F9 (2 Zeilen), Mitarbeiter 3 name ist in A10, Informationen in B11:F14 (3 Zeilen), etc. Einige Mitarbeiter haben nur eine oder zwei Reihen von Daten, einige haben 40-50 unter Ihrem Namen.
  • Sobald Sie identifiziert und ausgewählt, die Auswahl für den ersten Mitarbeiter, was ist der nächste Schritt? Ist es für das kopieren in ein neues Arbeitsblatt in Ihre master-Arbeitsmappe? in das gleiche format? neues format?
InformationsquelleAutor Anthony | 2013-05-02
Schreibe einen Kommentar