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
Inhaltsverzeichnis

860to864: Aktualisieren von Tabellenblättern

Aktualisieren von Tabellenblättern
12.04.2007 21:55:05
Günter

Guten Abend,
gerade hänge ich mit meinen VBA-Anfängerkenntnissen ziemlich in den Seilen und hoffe, dass mir evtl. jemand bei meinem unten stehenden Problem helfen kann.
In meiner Excelmappe gibt es auf 4 Tabellenblätter ("Auswahl1", "Auswahl2", "Auswahl3", "Auswahl4") einen Button aktualisieren (cmdAktualisieren).
Wenn ich diesen Button klicke, möchte ich, dass ab Zeile 13 im AcitiveSheet alle Zeilen bis zur letzten gefüllten Zeile mit Inhalt in Spalte H nach dem Zelleninhalt geprüft werden.
Der Zelleninhalt in Spalte H ist jeweils der Name von einem Tabellenblatt meiner Excelmappe.
Alle Zellen in Spalte H, die nun den gleichen Tabellennamen besitzen, sollen die Zeilen kopiert werden und
anschließend in das entsprechende Tabellenblatt ab Zeile 13 eingefügt und die alten Einträge zuvor gelöscht werden.
Zusätzlich gibt es ein Tabellenblatt "Uebersicht" auf dem alle Einträge der Tabellenblätter ("Auswahl1", "Auswahl2", "Auswahl3", "Auswahl4") zusammengefasst sind. D. h. wenn der User auf cmdAktualisieren klickt, müssen ebenfalls im Tabellenblatt "Uebersicht" zuerst alle Inhalte ab Zeile gelöscht werden und im Anschluss die kompletten Inhalte (ab Zeile 13) von den Tabellenblättern ("Auswahl1", "Auswahl2", "Auswahl3", "Auswahl4") hinzugefügt werden.
Beispiel:
Steht im Tabellenblatt "Auswahl2" in Zelle H22 der Wert "Tabelle1" und in Zelle89 der Wert "Tabelle1",
sollen alle Einträge im Tabellenblatt "Tabelle1"gelöscht werden und dies beiden Zeilen (22/89) in das
Tabellenballt "Tabelle1" ab Zeile 13 kopiert werden.
Zusätzlich muss das Tabellenblatt "Uebersicht" mit den Einträgen aus den Tabellenblättern ("Auswahl1", "Auswahl2", "Auswahl3", "Auswahl4") aktualisiert werden.
Für jede Hilfe schon vorab vielen Dank!
Gruß,
Günter

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktualisieren von Tabellenblättern
13.04.2007 07:48:40
Jan3
Hi,
Stell mal ein Beispiel ins Forum.
Jan

AW: Aktualisieren von Tabellenblättern
15.04.2007 19:35:24
fcs
Hallo Günther,
hier das Ergebnis meiner Bastelarbeit.
Den Hauptcode fügst du im VBA-Editor in ein Modul der Datei ein.
Im VBA-Code der 4 Auswahl-Tabellen fügts du folgenden 3-Zeiler als Code der Buttons ein:


Private Sub cmdAkutalisieren_Click()
Call Aktualisieren(Me)
End Sub


ggf. muss du in den 4 Auswahltabellen noch für den Button die Eigenschaft "TakeFocusOnClick" auf "False" setzen. War bei mir unter Excel97 zumindestens so.
Gruß
Franz


Sub Aktualisieren(wksAktiv As Worksheet)
Dim wksAuswahl As Worksheet, wksUeb As Worksheet
Dim lgZAuswahl As Long, lgZUeb As Long, lgZBlatt As Long
Dim TabName As String, wksBlatt As Worksheet, i as integer
Set wksUeb = Worksheets("Uebersicht")
Application.ScreenUpdating = False
' Alt-Daten in den Tabellen löschen
For Each wksBlatt In ActiveWorkbook.Worksheets
Select Case wksBlatt.Name
Case "Auswahl1", "Auswahl2", "Auswahl3", "Auswahl4"
'do nothing, Ausnahmeblätter
Case "Uebersicht"
'Daten in Übersicht löschen
With wksUeb
If .Cells(.Rows.Count, 1).End(xlUp).Row >= 13 Then
.Range(.Cells(13, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 10)) _
.ClearContents
End If
End With
Case Else
'Daten in anderen Tabellen löschen
With wksBlatt
If .Cells(.Rows.Count, 1).End(xlUp).Row >= 13 Then
.Range(.Cells(13, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 10)) _
.ClearContents
End If
End With
End Select
Next
'Auswahl-Tabellen abarbeiten
For i = 1 To 4
Set wksAuswahl = Worksheets("Auswahl" & i)
With wksAuswahl
'Daten aus der Auswahl-Tabelle nach Übersicht übertragen
.Range(.Cells(13, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 10)).Copy
'nächste freie Zeile im Übersichtsblatt
lgZUeb = wksUeb.Cells(wksUeb.Rows.Count, 1).End(xlUp).Row + 1
'Werte einfügen
wksUeb.Cells(lgZUeb, 1).PasteSpecial Paste:=xlPasteValues
'Daten aus dem aktiven Auswahl-Blatt in die Datentabellen übertragen
If wksAktiv.Name = wksAuswahl.Name Then
For lgZAuswahl = 13 To .Cells(.Rows.Count, 1).End(xlUp).Row
TabName = .Cells(lgZAuswahl, 8).Value 'Tabellen-Name in Spalte H
'Prüfen, ob Tabellen-Name vorhanden
For Each wksBlatt In ActiveWorkbook.Worksheets
If wksBlatt.Name = TabName Then Exit For
Next
If wksBlatt Is Nothing Then
If MsgBox("Das Tabellenblatt  '" & TabName & "'  ist noch nicht angelegt!" & _
vbLf & vbLf & "Übertragen abbrechen?", vbYesNo) = vbYes Then
Exit Sub
End If
Else
'Daten kopieren
.Cells(lgZAuswahl, 1).Range("A1:J1").Copy
'nächste freie Zeile im Tabellen-Blatt
lgZBlatt = wksBlatt.Cells(wksBlatt.Rows.Count, 1).End(xlUp).Row + 1
'Werte einfügen
wksBlatt.Cells(lgZBlatt, 1).PasteSpecial Paste:=xlPasteValues
End If
Next
End If
End With
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Aktualisieren von Tabellenblättern
15.04.2007 21:19:27
Günter
Hallo Franz,
vielen herzlichen Dank für Deine super Hilfe!
Der Code funktioniert prima!
Viele Grüße,
Günter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige