Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Visual Basic & Exel + Schleifen





Frage

Schleifen bei [b]Visual Basic[/b] einrichten und mehrere [b]Tabellen[/b] in eine kopieren hilfe eines [u]Makros[/u] !

Antwort 1 von riese

berg hoch geht´s schwerer als zu fuß !

was willst du ???????


adam

Antwort 2 von Kennyger

Also ich habe sagen wir ma 20 Tabellen mit jeweils 10 Spalten und 5 Zeilen nun möchte ich diese 20 Tabellen in eine und alle 5 zeilen immer hinterher schreiben und das mit einem Makro in einer Schleife verfassen !

Antwort 3 von coros

Hallo Kennyger ,

gestatte mir zum Anfang eine kleine Anmerkung. Ein Hallo am Anfang und ein Gruß am Ende würde Deinen Beitrag gleich viel netter aussehen lassen. Wenn Du zum Bäcker gehst sagst Du ja auch beim Reingehen "Guten Tag" und beim Gehen "Auf Wiedersehen". Denn die Leute, an die Du Deine Frage richtest, sitzen zwar am PC, sind aber dennoch Menschen.

Nun zu Deiner etwas spärlichen Frage. Kopiere nachfolgendes Makro in ein StandardModul und starte es über z.B. eine Befehlsschaltfläche.

Option Explicit

Sub Zusammenfassen()
Dim i As Integer
Application.ScreenUpdating = False
With Worksheets.Add
.Name = "Zusammenfassung"
End With
For i = 1 To Worksheets.Count
If Sheets(i).Name <> "Zusammenfassung" Then
Sheets(i).Range("A1:J5").Copy
Sheets("Zusammenfassung").Cells(Sheets("Zusammenfassung").Range("A65536").End(xlUp).Offset(1, 0).Row, 1).PasteSpecial
End If
Next
End Sub


Mit diesem Makro wird ein neues Tabellenblatt mit dem Namen "Zusammenfassung" erstellt. Darin werden die Daten aus alen Tabellenblättern der Arbeitsmappe aus dem Bereich A1:J5 hineinkopiert.

Ich hoffe Du meintest das so. Wenn nicht, melde Dich wieder. Schreibe dann aber bitte etwas deutlicher, was Du möchtest.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von Kennyger

Hi, ;)

1. Frage wäre das ist das bestehende makro was ich jetzt habe und würde jetzt gerne wissen ob ich nicht immer den dateinemen bzw Ort angeben muss...
sondern einfach sagen kann das er eine dateri nach der nächsten aus dem ordner nimmt....


2.Frage wäre ob jemand mir in dem makro einaml die bezeichnung der Range("B5:L385"). und Rows("4:696"). erklären könnte das einzigste was ich weiß ist das ,das die bezeichnung der SPalte bzw Zeile ist.





Sub Makro1()
'
' Makro1 Makro
' Makro am 06.03.2007 von . aufgezeichnet
'

'
ChDir "C:\Dokumente und Einstellungen\BRaune\Desktop\Neuer Ordner\Neuer Ordner"
Workbooks.Open Filename:= _
"C:\Dokumente und Einstellungen\BRaune\Desktop\Neuer Ordner\Neuer Ordner\33.xls"
Selection.AutoFilter
Rows("4:696").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:="<>"
Range("B5:L385").Select
Selection.Copy
Windows("FB-Z-L2-Maßnahmenplatest.xls").Activate
Range("B5").Select
ActiveSheet.Paste
Selection.AutoFilter Field:=3, Criteria1:="<>"
Selection.AutoFilter Field:=3, Criteria1:="="
ActiveWindow.SmallScroll Down:=-12
Range("B13").Select
Workbooks.Open Filename:= _
"C:\Dokumente und Einstellungen\BRaune\Desktop\Neuer Ordner\Neuer Ordner\333.xls"
Application.CutCopyMode = False
Selection.AutoFilter
Rows("4:619").Select
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:="<>"
Range("B5:L416").Select
Selection.Copy
Windows("FB-Z-L2-Maßnahmenplatest.xls").Activate
ActiveWindow.SmallScroll Down:=-9
ActiveSheet.Paste
Selection.AutoFilter Field:=3, Criteria1:="="
Range("C29").Select
Workbooks.Open Filename:= _
"C:\Dokumente und Einstellungen\BRaune\Desktop\Neuer Ordner\Neuer Ordner\3333.xls"
Application.CutCopyMode = False
Selection.AutoFilter
Selection.AutoFilter
Rows("4:194").Select
Selection.AutoFilter
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:="<>"
Range("B5:L290").Select
Selection.Copy
Windows("FB-Z-L2-Maßnahmenplatest.xls").Activate
Range("B21").Select
Workbooks.Open Filename:= _
"C:\Dokumente und Einstellungen\BRaune\Desktop\Neuer Ordner\Neuer Ordner\33333.xls"
Application.CutCopyMode = False
Selection.AutoFilter
Selection.AutoFilter
Rows("4:194").Select
Selection.AutoFilter
Selection.AutoFilter
Selection.AutoFilter Field:=3, Criteria1:="<>"
Range("B5:L290").Select
Selection.Copy
Windows("FB-Z-L2-Maßnahmenplatest.xls").Activate
Range("B21").Select
ActiveSheet.Paste
Selection.AutoFilter Field:=3
Range("A9").Select
Windows("33.xls").Activate
Application.DisplayAlerts = False
ActiveWindow.Close
Windows("333.xls").Activate
Application.DisplayAlerts = False
ActiveWindow.Close
Windows("3333.xls").Activate
Application.DisplayAlerts = False
ActiveWindow.Close
Range("A2").Select
Windows("33333.xls").Activate
Application.DisplayAlerts = False
ActiveWindow.Close
Range("A2").Select
End Sub

Antwort 5 von coros

Hallo Kennyger,

irgendwie komme ich mir jetzt verarscht vor. Deine Fragen aus AW2 (20 Tabellen mit 10 Spalte) und AW4 (verschiedene Dateien auslesen) sind nun völlig verschieden und haben irgendwie nichts gemeinsam. Überlege DIr erst mal genau, was Du möchtest und dann melde Dich wieder mit einer genauen Beschreibung von dem, was Du eigentlich vor hast.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von Kennyger

Hallo, Oliver wie du siehst habe ich schon eine Schleife konstruiert die aber bis jetzt noch nicht komplett funktioniert ...weil, mir diese zwei Fragen noch unklar sind könntest du mir weiter helfen?



1. Frage wäre das ist das bestehende makro was ich jetzt habe und würde jetzt gerne wissen ob ich nicht immer den dateinemen bzw Ort angeben muss...
sondern einfach sagen kann das er eine dateri nach der nächsten aus dem ordner nimmt....


2.Frage wäre ob jemand mir in dem makro einaml die bezeichnung der Range("B5:L385"). und Rows("4:696"). erklären könnte das einzigste was ich weiß ist das ,das die bezeichnung der SPalte bzw Zeile ist.

Antwort 7 von coros

Hallo Kennyger,

wenn Du das unter besser beschreiben verstehst!?! Für mich ist das der gleiche Inhalt wie in AW4. Aber egal....

1. In Deinem Makro sehe ich nirgends eine Schleife, auch nicht, wenn Du schreibst, Du hättest eine Schleife konstruiert. Was Du gepostet hast, ist ein Makro, dass DU wahrscheinlich mit dem Makrorekorder aufgezeichnet hast. Jedenfalls gehe ich davon aus, wenn ich die ganzen Select sehe. Ich habe Dein Makro in eine Schleife eingearbeitet, kann Dir aber nicht sagen, dass es 100%ig läuft, da ich es nicht getestet habe. In diesem Makro befindet sich eine Do/ Loop-Anweisung, über die jede Datei in dem Verzeichnis "C:\Dokumente und Einstellungen\BRaune\Desktop\Neuer Ordner\Neuer Ordner" öffnet und dann den Code anwendet. Abschließend wird die geöffnete Datei wieder geschlossen. Kopiere nachfolgendes Makro in ein StandardModul.

Option Explicit

Sub Makro1()
Dim Dateiname As String
Dateiname = Dir("C:\Dokumente und Einstellungen\BRaune\Desktop\Neuer Ordner\Neuer Ordner\*.xls")

Do While Dateiname <> ""
    Workbooks.Open Dateiname
    
    Selection.AutoFilter
    Rows("4:696").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=3, Criteria1:="<>"
    Range("B5:L385").Select
    Selection.Copy
    Windows("FB-Z-L2-Maßnahmenpla0test.xls").Activate
    Range("B5").Select
    ActiveSheet.Paste
    Selection.AutoFilter Field:=3, Criteria1:="<>"
    Selection.AutoFilter Field:=3, Criteria1:="="
    ActiveWindow.SmallScroll Down:=-12
    Range("B13").Select
    Workbooks.Open Filename:= _
    "C:\Dokumente und Einstellungen\BRaune\Desktop\Neuer Ordner\Neuer Ordner\333.xls"
    Application.CutCopyMode = False
    Selection.AutoFilter
    Rows("4:619").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=3, Criteria1:="<>"
    Range("B5:L416").Select
    Selection.Copy
    Windows("FB-Z-L2-Maßnahmenplatest.xls").Activate
    ActiveWindow.SmallScroll Down:=-9
    ActiveSheet.Paste
    Selection.AutoFilter Field:=3, Criteria1:="="
    Range("C29").Select
    Workbooks.Open Filename:= _
    "C:\Dokumente und Einstellungen\BRaune\Desktop\Neuer Ordner\Neuer Ordner\3333.xls"
    Application.CutCopyMode = False
    Selection.AutoFilter
    Selection.AutoFilter
    Rows("4:194").Select
    Selection.AutoFilter
    Selection.AutoFilter
    Selection.AutoFilter Field:=3, Criteria1:="<>"
    Range("B5:L290").Select
    Selection.Copy
    Windows("FB-Z-L2-Maßnahmenplatest.xls").Activate
    Range("B21").Select
    Workbooks.Open Filename:= _
    "C:\Dokumente und Einstellungen\BRaune\Desktop\Neuer Ordner\Neuer Ordner\33333.xls"
    Application.CutCopyMode = False
    Selection.AutoFilter
    Selection.AutoFilter
    Rows("4:194").Select
    Selection.AutoFilter
    Selection.AutoFilter
    Selection.AutoFilter Field:=3, Criteria1:="<>"
    Range("B5:L290").Select
    Selection.Copy
    Windows("FB-Z-L2-Maßnahmenplatest.xls").Activate
    Range("B21").Select
    ActiveSheet.Paste
    Selection.AutoFilter Field:=3
    Range("A9").Select
    Windows("33.xls").Activate
    Application.DisplayAlerts = False
    ActiveWindow.Close
    Windows("333.xls").Activate
    Application.DisplayAlerts = False
    ActiveWindow.Close
    Windows("3333.xls").Activate
    Application.DisplayAlerts = False
    ActiveWindow.Close
    Range("A2").Select
    Windows("33333.xls").Activate
    Application.DisplayAlerts = False
    ActiveWindow.Close
    Range("A2").Select
      
    ActiveWorkbook.Close True
  Dateiname = Dir
Loop
End Sub


2. "Range("B5:L385")" grenzt bzw. legt einen Bereich, in diesem Fall den Bereich von Zelle B5 bis Zelle L385, ein/fest.
"Rows("4:696")" bezieht sich auf die Zeilen. In diesem Fall werden die Zeilen 4 bis 696 festgelegt/ angesprochen.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 8 von Kennyger

Meine Frage war ja NICHT den Dateinamen
bei jeder Öffnung angeben zu müssen....

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: