VBA - Übersicht aus mehreren Tabellenblättern

Hallo an alle.

Habe schon nach Lösungen für mein Problem gesucht, aber keine hat mich wirklich weitergebracht.

Hier also mein Problem:

Ich will aus mehreren Tabellenblättern eine Art Übersicht erstellen. Nur, dass ich dazu nicht alle Tabellenblätter benötige.
Wie kann ich also die benötigten ansprechen bzw. die nicht benötigten ausschließen. Die Anzahl der nicht benötigten ist kleiner, aber ich weiß ja nicht, welche Variante kürzer (bzw. einfacher) ist.

Aus den entsprechenden Tabellenblättern brauche ich die Spalten B bis I von Zeile 5 bis zur letzten benutzten Zeile.

Da es sich bei den einzelnen Tabellenblättern um Packmittel handelt, sollte über dem oben genannten ausgelesen Bereich das entsprechende Packmittel stehen. Da die Tabellenblätter nach den Packmitteln benannt sind, wäre es toll, wenn man den Tabellenblattnamen auslesen könnte.

In der Spalte C der Tabelln mit Namen der Packmittel stehen Artikel-Nr., die mit LI oder PA beginnen. Vllt kann man die Tabellenblätter auch darüber ‚ansprechen‘.

Außerdem sollte es wenn möglich so sein, dass wenn ein neues Tabellenblatt hinzukommt, dieses automatisch bei KLick auf die Schaltfläche übersicht mit in die Übersicht aufgenommen wird.

Hoffe, es kann mir wer weiterhelfen und ich habe es verständlich genug erklärt. Ansonsten stehe ich für Nachfragen natürlich gern zur Verfügung.

Danke schon mal im Voraus.

Gruß,
Victoria

Hallo, Silke!

Hoffe, es kann mir wer weiterhelfen und ich habe es
verständlich genug erklärt. Ansonsten stehe ich für Nachfragen
natürlich gern zur Verfügung.

Ich habe leider Deine Frage nicht verstanden.

Soll die Übersicht auf einem speziellen Tabellenblatt stehen und einen Teil der Daten von einigen anderen Tabellenblättern enthalten?

Wäre nicht schon die Feldfunktion SVERWEIS aus Excel ausreichend?

Gruß,
Martin

Hallo Martin,

danke erst mal für Deine Antwort.

Entschuldige bitte, wenn ich das jetzt so deutlich sagen muss, aber ich heiße NICHT Silke, SONDERN Victoria.

Also die Übersicht soll auf einem speziellen Tabellenblatt namens „Übersicht“ stehen und alle Daten der Spalten B bis I und Zeilen 5 bis zur letzten benutzten Zeile aus den Tabellenblättern, die nach Packmitteln benannt sind, enthalten.

Unter folgendem Link findest Du mal eine gekürzte Beispielversion:

http://rapidshare.com/files/248751181/Variante1.xls…

(Unter der Schaltfläche ‚Inventurliste‘ versteckt sich die gewünschte Übersicht.)

Vllt verstehst Du mein Prob dann besser und kannst mir helfen.
Und wenn es Deiner Meinung nach mit SVERWEIS funktionieren könnte, wäre es nett, wenn Du mir sagen könntest, wie ich es damit machen muss.

Danke schon mal.

PS: Arbeite mit Windows XP, Excel 2002

Gruß,
Victoria

Hallo LEStudent

Entschuldige bitte, wenn ich das jetzt so deutlich sagen muss,
aber ich heiße NICHT Silke, SONDERN Victoria.

So kann man natürlich auch Namen erfahren *zwinker*

Also die Übersicht soll auf einem speziellen Tabellenblatt
namens „Übersicht“ stehen und alle Daten der Spalten B bis I
und Zeilen 5 bis zur letzten benutzten Zeile aus den
Tabellenblättern, die nach Packmitteln benannt sind,
enthalten.

Spontan würde ich wie immer bei so etwas herangehen:

  1. Tabellenblatt aufmachen.
  2. Do until Schleife und alle ntsprechenden Werte entweder in eine Variable oder als Block speichern (in diesem Fall vllt. eher Variablen).
  3. Zum Blatt Übersicht wechseln und Werte eingeben ( um dann bei Variablen zurück zum Packmittel). …
  4. Wenn zu untersuchendes Blatt zu Ende, dann Tab unsichtbar machen, nächstes Packmittel anwählen und zurück zu Punkt 2.

Wenn du willst, kann ich aus deiner Beispieldatei einen Schnipsel vorbereiten, allerdings habe ich heute eher weniger Zeit - könnte also auch bis Montag dauern.

Grüße, Aiko.

Hallo Aiko,

vielen Dank für Deine Antwort.

Ich wäre Dir wirklich sehr dankbar, wenn Du mir anhand meiner Beispiel-Datei einen Schnipsel vorbereiten könntest, mit dem ich weiter arbeiten könnte.

Da es ja soweit erst mal funktioniert, ist es auch nicht so schlimm, wenn es bis Montag dauern würde.

Gruß,
Victoria

Wenn du willst, kann ich aus deiner Beispieldatei einen
Schnipsel vorbereiten, allerdings habe ich heute eher weniger
Zeit - könnte also auch bis Montag dauern.

Grüße, Aiko.

Hallo LEStudent.

Basierend auf deiner Datei hier ein Prozess (zweigeteilt). Ich habe damit zwei Packnamen nacheinander in die Übersicht übertragen. Allerdings habe ich keine Formate berücksichtigt. Das könntest du dann anpassen. Überhaupt müsstest du das alles noch in deine Idee (n) einbasteln, aber das übertragen der Daten funktioniert. Im oberen Sub brauchst du nur den Bereich

packname = „Bodenpappe“
daten_uebertragen packname

mit den jeweiligen Packnamen erweitern. Der Rest sollte von alleine und automatisch laufen.

Hier mein Spaß:

Sub uebersichterstellen()

Application.ScreenUpdating = False

Worksheets(„Übersicht“).Visible = True
Worksheets(„Übersicht“).Select
Range(„C5“).Select

Dim packname As String
packname = „Antirutschpapier“
daten_uebertragen packname
packname = „Bodenpappe“
daten_uebertragen packname
’ und so weiter

Sheets(„Übersicht“).Select
Range(„A1“).Select

Application.ScreenUpdating = True

End Sub

Sub daten_uebertragen(packname As String)

Dim artnr As String
Dim eigenschaft As String
Dim lagerbestand As String
Dim minbestand As String

Worksheets(packname).Visible = True
Worksheets(packname).Select

i = 5
Do Until Range(„C“ & i) = „“
artnr = Sheets(packname).Range(„C“ & i)
eigenschaft = Sheets(packname).Range(„D“ & i)
lagerbestand = Sheets(packname).Range(„F“ & i)
minbestand = Sheets(packname).Range(„H“ & i)
Sheets(„Übersicht“).Select
ActiveCell = artnr
ActiveCell.Offset(0, 1).Select
ActiveCell = eigenschaft
ActiveCell.Offset(0, 2).Select
ActiveCell = lagerbestand
ActiveCell.Offset(0, 2).Select
ActiveCell = minbestand
ActiveCell.Offset(1, -5).Select
Sheets(packname).Select
i = i + 1
Loop

Worksheets(packname).Visible = False
End Sub

Bei Fragen einfach melden.

Mit Grüßen.

Hallo kackei,

danke für Deine schnelle Antwort.

Werde es so schnell wie möglich ausprobieren und gebe Dir dann Bescheid, ob es funktioniert hat oder nicht.

Gruß,
Victoria

Hallo kackei,

habe Deinen Code gerade getestet.
Funktioniert auch ohne Probleme, aber:

Es wäre nett, wenn Du das mit den Formaten noch berücksichtigen könntest, da ich nicht genau weiß, wo genau & wie ich das ‚hineinbasteln‘ müsste, da ich nicht sicher bin, ob es so geht, wie ich das bis jetzt gemacht habe.

Außerdem wäre es toll, wenn über jedem ‚Abschnitt‘ noch das entsprechende Packmittel stehen würde, wie es in meiner Beispieldatei ja auch der Fall ist.

Danke schon mal im Voraus.
Musst Dich auch nicht beeilen. Mach es so, wie Du Zeit findest.

Gruß,
Victoria

Hallo LEStudent.

Ich habe es einfacher gehalten, dafür gleich mal anfangs alles löschen eingefügt.:

Sub uebersichterstellen()

Application.ScreenUpdating = False

Worksheets(„Übersicht“).Visible = True
Worksheets(„Übersicht“).Select

Range(„B4:J500“).ClearFormats
Range(„B4:J500“).ClearContents

Range(„B4“).Select

Dim packname As String
packname = „Antirutschpapier“
ActiveCell = packname
ActiveCell.Offset(1, 0).Select
daten_uebertragen packname
packname = „Bodenpappe“
ActiveCell = packname
ActiveCell.Offset(1, 0).Select
daten_uebertragen packname
’ und so weiter

Sheets(„Übersicht“).Select
Range(„A1“).Select

i = 5
Do Until i = 500
If Range(„C“ & i) „“ Then
Range(„J“ & i).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Else
End If
i = i + 1
Loop

Range(„A1“).Select

Application.ScreenUpdating = True

End Sub

Sub daten_uebertragen(packname As String)

Dim artnr As String
Dim eigenschaft As String
Dim lagerbestand As String
Dim minbestand As String

Worksheets(packname).Visible = True
Worksheets(packname).Select

i = 5
Do Until Range(„C“ & i) = „“
Range(„B“ & i & „:I“ & i).Copy
Sheets(„Übersicht“).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
ActiveCell.Offset(1, 0).Select
Sheets(packname).Select
i = i + 1
Loop

Worksheets(packname).Visible = False
Sheets(„Übersicht“).Select
ActiveCell.Offset(1, 0).Select

End Sub

sollte jetzt dem entsprechen, was du erfragt hattest.

Mit Grüßen.

1 Like

Hallo kackei.

Danke noch mal.
Der Code funktioniert einwandfrei.
Genau das, was ich mir vorgestellt hab.

Wünsch Dir ein schönes Wochenende.

Gruß,
Victoria

Hallo, Victoria!

Entschuldige bitte die falsche Anrede. Ich habe an dem Tage mehrere Forenbeiträge verfsasst und da wohl nicht genau aufgepasst.

Schön, dass es schon eine Lösung gibt.

Gruß,
Martin