Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
860to864
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
860to864
860to864
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
mittels VBA Werte div. Tab in neue Tab kopieren
12.04.2007 11:29:00
Fritz_W
Hallo Forumsbesucher,
ich würde gerne per Makro folgendes bewerkstelligen können und brauche dazu eure Hilfe:
Aus allen in der Arbeitsmappe existierenden Tabellen, deren Tabellenname einem Eintrag im Bereich E2:E7 der Tabelle "Daten" entspricht, sollen alle Werte der Spalten A und B, beginnend ab Zeile 5 nacheinander in die Tabelle "Gesamt" (beginnend) ab Zeile 5 kopiert werden. Gleichzeitig sollte in der Spalte C der Tabelle "Gesamt" jeweils der Name der Tabelle eingefügt werden, aus dem der jeweilige Eintrag in den Spalte A und B stammt.
Beispiel:
In der Tabelle "Daten" finden sich in den Zellen E2:E7 folgende Einträge:
E2: "AA"
E3: "AB"
E4: "AC"
E5: "AD"
E6: ""
E7: ""
In der Arbeitsmappe befinden sich z.B. (neben einigen anderen Tabellen) auch Tabellen mit den Tabellennamen "AA", "AB", "AC" und "AD".
Beginnend mit der ersten dieser (in diesem Fall "vier") Tabellen (Tabelle "AA") sollen alle Werte dieser Tabelle der Spalten A und B, beginnend ab Zeile 5 bis zur ersten leeren Zelle in der Spalte A in die Tabelle "Gesamt" kopiert werden (beginnend ab Zeile 5 der Tabelle "Gesamt", ebenfalls in die Spalten A und B). In die Spalte C sollte zusätzlich jeweils der Tabellenname, also "AA" eingefügt werden. Wenn beispielsweise in "AA" in der Spalte A nach Zeile 5 die erste leere Zelle die Zelle A35 ist, sollte die Werte aus der Tabelle "AA" die Werte des Bereichs "A5:B34" nach "Gesamt" in den Bereich "A5:B34" kopiert werden, und in den Bereich C5:C34 jeweils "AA" eingefügt werden. Anschließend sollte mit den restlichen Tabellen ("AB", "AC" und AD") gleiches geschehen, wobei die Eintragungen in der Tabelle "Gesamt" jeweils im Anschluss an die Einfügungen aus der "vorangegangenen" Tabelle erfolgen sollten. Im vorliegenden Fall sollten die Eintragungen aus der Tabelle "AB" in der Tabelle "Gesamt" damit ab Zeile 35 erfolgen. In die Spalte C jeweils ebenfalls der Tabellenname der "Quelltabelle", also nun "AB".
Ich hoffe, dass mein Anliegen für euch nachvollziehbar ist und freue mich über eure Unterstützung.
Mfg
Fritz

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mittels VBA Werte div. Tab in neue Tab kopieren
12.04.2007 12:01:00
Ingo
Hall Fritz,

Sub einfügen()
Dim wks As Worksheet
Dim strblattname As String
Dim intzähler As Integer
Dim lngrow As Long
Dim lngpasterow As Long
Dim lngblattname As Long
For intzähler = 2 To 7
strblattname = Sheets("Daten").Range("E" & intzähler)
For Each wks In ThisWorkbook.Sheets
If wks.Name = strblattname Then
lngrow = Sheets(strblattname).[A65536].End(xlUp).Row
lngpasterow = Sheets("Gesamt").[A65536].End(xlUp).Row + 1
If lngpasterow 
mfG
IngoChristiansen
Funktioniert! Besten Dank!
12.04.2007 12:33:00
Fritz_W
Hallo Ingo,
vielen Dank, funktioniert ganz prima.
Eine Frage dennoch: Wäre es auch möglich, dass nur die Werte, nicht auch die Formate übertragen werden?
Gruß
Fritz
Anzeige
AW: Funktioniert! Besten Dank!
12.04.2007 12:50:00
Ingo
Nur Werte einfügen:

Sub einfügen()
Dim wks As Worksheet
Dim strblattname As String
Dim intzähler As Integer
Dim lngrow As Long
Dim lngpasterow As Long
Dim lngblattname As Long
For intzähler = 2 To 7
strblattname = Sheets("Daten").Range("E" & intzähler)
For Each wks In ThisWorkbook.Sheets
If wks.Name = strblattname Then
lngrow = Sheets(strblattname).[A65536].End(xlUp).Row
lngpasterow = Sheets("Gesamt").[A65536].End(xlUp).Row + 1
If lngpasterow 
mfG
Ingo Christiansen
AW: Funktioniert! Besten Dank!
12.04.2007 13:53:00
Fritz_W
Hallo Ingo,
ich bitte zunächst um Entschuldigung, weil ich mich so spät melde.
Ich war (unvorhergesehenerweise) vorübergehend verhindert.
Das Makro funktioniert jetzt wie gewünscht! Code läuft relativ lange. Hat wohl damit zutun, dass viele "sonstige"andere Dateien in der Arbeitsmappe enthalten sind.
Dir nochmals vielen Dank für die großzügige Unterstützung!
Gruß
Fritz
Anzeige
AW: Funktioniert! Besten Dank!
12.04.2007 23:53:00
Erich
Hallo Fritz,
so läuft es vermutlich um einiges schneller:

Option Explicit
Sub einfügen()
Dim rngE As Range, lngZvon As Long, lngQbis As Long
Dim Calc As XlCalculation
Calc = Application.Calculation: Beschleuniger xlCalculationManual
Sheets("Gesamt").Select
lngZvon = Cells(Rows.Count, 1).End(xlUp).Row + 1
If lngZvon  "" Then
With Sheets(rngE.Value)
lngQbis = .Cells(Rows.Count, 1).End(xlUp).Row
If lngQbis >= 5 Then
Range(Cells(lngZvon, 1), Cells(lngZvon + lngQbis - 5, 2)) = _
.Range(.Cells(5, 1), .Cells(lngQbis, 2)).Value
Range(Cells(lngZvon, 3), Cells(lngZvon + lngQbis - 5, 3)) = rngE.Value
lngZvon = lngZvon + lngQbis - 4
End If
End With
End If
Next rngE
Beschleuniger Calc
End Sub
'   Beschleuniger _______ Parameter: Calc-Status ______ gi/12.03.2006
'Aufruf:
'   Dim Calc As XlCalculation
'   Calc = Application.Calculation: Beschleuniger xlCalculationManual
'   ....Code....
'   Beschleuniger Calc
Sub Beschleuniger(StatCal As XlCalculation)
Application.Calculation = StatCal
Application.EnableEvents = (StatCal  xlCalculationManual)
Application.ScreenUpdating = (StatCal  xlCalculationManual)
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Blitzschnell!
13.04.2007 08:33:49
Fritz_W
Hallo Erich,
super, "ein Wimpernschlag" und das Makro hat seine Aufgabe erledigt!
Vielen Dank.
Mfg
Fritz

319 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige