Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Bestimmte Tabellen mit VBA in eine andere Mappe verschieben
#1
Hallo VBA-Freunde,

ich knoble wieder mal an einem Problem:
Ich habe verschiedene Arbeitsmappen, aus denen ich bestimmte Tabellen in eine andere Arbeitsmappe kopieren möchte. Alle haben folgenden Tabellenblattnamen
Supply Lot#01 bis Supply Lot#10
oder noch mehr, die Anzahl dieser Tabellen kann ich bestimmen oder
alle Tabellen zwischen der Tabelle "Purchasing Budget hedging" und der Tabelle "Summary" markieren. Zwischen diesen beiden Tabellen stehen die benötigten Tabellen immer.

Wie müsste der Code lauten, der mir die Tabellen markiert (gruppiert)?

Die Makroaufzeichnung bringt mir

Sheets(Array("Supply Lot#01", "Supply Lot#02", "Supply Lot#03", "Supply Lot#04")). _
Select
damit komme ich aber nicht weiter.

Vielen Dank für eure Anregungen schon im voraus.
Es ist nicht genug, zu wissen. Man muss es auch anwenden.
Es ist nicht genug, zu wollen. Man muss es auch tun.
Antworten Top
#2
Hallo Heinz,

kommst Du mit folgenden Beispielen weiter:

Code:
eine Variante
   Dim i As Long
   Dim arr
   arr = Sheets(Array("Supply Lot#01", "Supply Lot#02", "Supply Lot#03", "Supply Lot#04"))
   For i = 0 To UBound(arr) - 1
      'hier kpiervorgang
      Sheets(i).Copy
   Next i
  
'eine andere Variante (Ausschluss der nicht zu kopierenden Tabellen
   Dim i As Long
   For i = 0 To UBound(arr) - 1
      Select Case Sheets(i).Name
         Case "Purchasing ", "Summary"
        
         Case Else
         'hier kpiervorgang
         Sheets(i).Copy
      End Select
   Next i
Gruß Atilla
Antworten Top
#3
Hi Heinz.

Das war zu schnell geschrieben, hier noch mal korrigiert

Code:
eine Variante
   Dim i As Long
   Dim arr
   arr = Sheets(Array("Supply Lot#01", "Supply Lot#02", "Supply Lot#03", "Supply Lot#04"))
   For i = 0 To UBound(arr) - 1
      'hier kpiervorgang
      Sheets(i).Copy
   Next i
  
'eine andere Variante (Ausschluss der nicht zu kopierenden Tabellen
   Dim i As Long
   For i = 1 To Sheets.Count
      Select Case Sheets(i).Name
         Case "Purchasing ", "Summary"
        
         Case Else
         'hier kpiervorgang
         Sheets(i).Copy
      End Select
   Next i
Gruß Atilla
Antworten Top
#4
Hallo Atilla,

beide Code laufen bei mir auf einen Fehler auf-

Code:
Sub Test()
Dim i As Long
    For i = 0 To UBound(arr) - 1
       Select Case Sheets(i).Name
          Case "Purchasing ", "Summary"
          
          Case Else
          'hier kpiervorgang
          Sheets(i).Copy
       End Select
    Next i
End Sub
hier meldet mir VBA bei For i = 0 To UBound(arr) - 1
Fehler 13: Typen unverträglich

Code:
Sub Test2()
Dim i As Long
    Dim arr
    arr = Sheets(Array("Supply Lot#01", "Supply Lot#02", "Supply Lot#03", "Supply Lot#04"))
    For i = 0 To UBound(arr) - 1
       'hier kpiervorgang
       Sheets(i).Copy
    Next i
End Sub
und hier bei arr = ...
Laufzeitfehler 450, Falsche Anzahl von Argumenten oder ungültige Zuweisung einer Eigenschaft.

Code strukturiert dargestellt durch 3. Button von rechts im Beitragsformular: #
[Bild: smilie.php?smile_ID=1810]
Es ist nicht genug, zu wissen. Man muss es auch anwenden.
Es ist nicht genug, zu wollen. Man muss es auch tun.
Antworten Top
#5
Hallo Heinz,

sorry, mit Copy und passte sollte man umgehen können, mein Fehler.

Jetzt aber:

Code:
'eine Variante
   Dim i As Long
   Dim arr
   arr = Array("Supply Lot#01", "Supply Lot#02", "Supply Lot#03", "Supply Lot#04")
   For i = 0 To UBound(arr) - 1
      'hier kpiervorgang
      Sheets(i).Copy
   Next i
  
'eine andere Variante (Ausschluss der nicht zu kopierenden Tabellen
'   Dim i As Long
   For i = 1 To Sheets.Count
      Select Case Sheets(i).Name
         Case "Purchasing ", "Summary"
        
         Case Else
         'hier kpiervorgang
         Sheets(i).Copy
      End Select
   Next i
End Sub
Gruß Atilla
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste