Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1344to1348
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
Inhaltsverzeichnis

Zellbezüge ergänzen wenn neuesTabellenblatt

Zellbezüge ergänzen wenn neuesTabellenblatt
04.02.2014 10:47:02
Jens
Liebe Excel-Experten,
Ich möchte eine Tabelle erstellen, die meine Arbeitsaufträge erfasst.
Für jeden Auftrag habe ich ein eigenes Tabellenblatt erstellt. In diesem stehen dann die einzelnen Arbeitsschritte, ob sie erledigt sind oder in welchem Status sie sich befinden. Diese Tabellenblätter sind bereits fertig
Gewisse Werte aus diesen Tabellenblättern möchte ich in einem übergeordneten Tabellenblatt automatisch auflisten lassen. So dass ich gleich sehe, in welchem Status sich die einzelnen Aufträge befinden. Ich will pro Auftrag gewisse Werte in der Liste sehen.
So soll es sein:
Wenn ich einen neuen Auftrag, also ein neues Tabellenblatt hinzufüge (per Makro, als leere Kopie eines vorhandenen Auftrages), sollten die gewünschten Werte dieses neuen Tabellenblattes automatisch der Auftragsliste als neue Zeile hinzugefügt werden.
Falls ich ein Auftragstabellenblatt lösche, sollte es auch aus der Auftragsliste verschwinden.
Beispiel: Der Wert Tabellenblatt1!D2 soll im Tabellenblatt "Auftragsübersicht" in Zelle A1 stehen.
Kommt ein neues "Tabellenblatt2" dazu, soll in Tabellenblatt "Auftragsübersicht" der Wert Tabellenblatt!D2 in Zelle A2 Von Auftragsübersicht stehen.
Weitere neue Tabellenblätter fügen sich wieder eine Zeile Tiefer in der Auftragsübersicht hinzu.
Sicherlich ist das nur per VBA zu machen. Aber leider kann ich nicht mehr, als ein Makro aufzeichnen und es ggf. geringfüging anpassen.
Falls mir jemand für mein "Problem" einen VBA-Schnippsel schreiben kann, würde ich mich sehr freuen. Vielleicht geht es auch einfacher...?
Ich freue mich auf Antworten - vielen Dank im Voraus.
Jens

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellbezüge ergänzen wenn neuesTabellenblatt
04.02.2014 13:47:06
fcs
Hallo Jens,
hier ein Makro, dass deine Wunschliste abarbeitet.
Die Daten werden ab Zeile 2 eingetragen.
Zeile 1 kannst du für Spaltentitel nutzen.
Alternativ mit etwas Handarbeit könntest du in einer Spalte die Blattnamen eintragen und mit der Funktion INDIREKT arbeiten.
Dann müsstest du bei einem neuen Blatt eine vorhanden Zeile kopieren und den Blattnamen anpassen, bei einem weggefallenen Blatt die Zeile oder einen anderen Namen eintragen.
Formelbeispiel:
Blattname	Feld01	Feld02
Tabelle10	Test	100%
Tabelle11	Test 44	50%
B2: =WENN($A2="";"";INDIREKT("'"&$A2 & "'!D2";WAHR))
C2: =WENN($A2="";"";INDIREKT("'"&$A2 & "'!F2";WAHR))
Gruß
Franz
'Code im Modul des Blatts "Auftragsübersicht
Private Sub Worksheet_Activate()
'Übersicht aktualisieren
Dim wks As Worksheet, strName As String
Dim rngFind As Range, lngZeile As Long
Const SpaBlattName = 10 'Spalte J = Spalte mit Blattnamen ggf. anpassen
'Prüfen ob Blattnamen in Spalte  noch vorhanden
For lngZeile = Cells(Rows.Count, SpaBlattName).End(xlUp).Row To 2 Step -1
strName = Cells(lngZeile, SpaBlattName).Text
If fncCheckSheet(strName) = False Then
Rows(lngZeile).Delete
End If
Next
For Each wks In ActiveWorkbook.Worksheets
Select Case wks.Name
Case "Auftragsübersicht", "Tabelle XYZ"
'diese Tabellen nicht in Übersicht listen
Case Else
strName = wks.Name
'Blattname in Spalte A der Übersicht suchen
Set rngFind = Columns(SpaBlattName).Find(What:=strName, LookIn:=xlValues, lookat:= _
xlWhole)
If rngFind Is Nothing Then
'neues Blatt
lngZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(lngZeile, 1).FormulaLocal = "='" & strName & "'!$D$2"
Cells(lngZeile, 2).FormulaLocal = "='" & strName & "'!$F$2"
'usw.
Cells(lngZeile, SpaBlattName) = "'" & strName 'erforderlich für Datenabgleich!!
Else
'Blatt schon in Liste
End If
End Select
Next
End Sub
Function fncCheckSheet(strText, Optional wkb As Workbook) As Boolean
'Überprüft, ob Blatt mit Name strText in der Arbeitsmappe vorhanden ist
Dim objSheet As Object
On Error GoTo Fehler
If wkb Is Nothing Then Set wkb = ActiveWorkbook
Set objSheet = wkb.Sheets(strText)
fncCheckSheet = True
Exit Function
Fehler:
End Function

Anzeige
AW: Zellbezüge ergänzen wenn neuesTabellenblatt
04.02.2014 14:26:36
Jens
Hallo Franz,
vielen Dank für deine Antwort und den VBA-Code.
Ich habe ihn nun in das richtige Modul eingebaut.
Erst einmal funktioniert es - aber ich muss das erst einmal etwas studieren...
Grundsätzlich ist es schon das, was ich haben möchte. Schön, dass du meine Formulierung verstanden hast - ist ja nicht einfach zu beschreiben, was man möchte...
OK, ich habe mal die Spalte J angepasst. Genau die hätte ich lieber in Spalte 1.
Das kann ich aber nicht anpassen, weil in Spalte 1 ja schon eine andere Information aus den Tabellenblättern steht.
Ich konnte verstehen, welche Zelle aus den Tabellenblättern ausgelesen werden soll. steht ja unter 'neues Blatt (danke für die Remarks).
Wie kann ich denn einstellen, dass der Wert aus z.B. Zelle D5 der Aufträge in Spalte 2 der "Auftragsübersicht", und Zelle G6 in Spalte 3 usw. eingetragen wird?
Das habe ich aus dem Code nicht verstehen können.
So hätte ich es gerne: Spalte A: Name des Tabellenblattes
Spalte B: Wert B4
Spalte C: Wert C4
Spalte D: Wert I1
Magst du mir da nochmal unter die Arme greifen?
Danke Jens

Anzeige
AW: Zellbezüge ergänzen wenn neuesTabellenblatt
04.02.2014 16:32:45
fcs
Hallo Jens,
eigentlich hätte dir auch bei Kenntnis "VBA-bescheiden" schon auffallen müssen, dass bei Cells der 2. Parameter die Nummer der Spalte ist. Speziell nachdem du ja in der Beschreibung schon von Spalte 2 und 3 schreibst statt B und C, auch wenn du am Ende noch einen kleinen Rückfall hattest
          'neues Blatt
lngZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(lngZeile, 2).FormulaLocal = "='" & strName & "'!$B$4" '2 = Spalte B
Cells(lngZeile, 3).FormulaLocal = "='" & strName & "'!$C$4" '3 = Spalte C
'usw.
Cells(lngZeile, SpaBlattName) = "'" & strName 'erforderlich für Datenabgleich!!
Gruß
Franz

Anzeige
AW: Zellbezüge ergänzen wenn neuesTabellenblatt
05.02.2014 10:12:49
Jens
Hallo Franz,
nochmal Dank.
Ja, es ist mir auch irgendwie aufgefallen. Nur das Wort "Row" heißt ja eigentlich "Zeile" und nicht "Spalte".
Deshalb bin ich mit meinen "bescheidenen" Kenntnissen aus logischen Gründen angeeckt.
Denn in deinem Code steht ja "Zeile", was ja am Ende doch eine Spalte ist...
Cells(lngZeile, 2).FormulaLocal = "='" & strName & "'!$B$4" '2 = Spalte B
Ich hoffe, du kannst mir meine Naivität verzeihen.
Mit diesen Informationen müsste ich mein Tabellenblatt gestalten können.
falls ich noch Probleme haben sollte, würde ich mich gerne nochmal an dich wenden
Vielen Dank, hast mir sehr geholfen
Jens

Anzeige
AW: Zellbezüge ergänzen wenn neuesTabellenblatt
05.02.2014 12:47:41
Jens
ich nochmal: OK, das mit den Spalten habe ich jetzt so angepasst, wie ich es haben möchte.
Wie mache ich es denn, dass die gesamte Auflistung nicht in Zeile 2 sondern in Zeile 3 anfängt?
Ich habe schon herumprobiert - ohne Erfolg.
Ich freue mich noch auf deinen Tipp.
Vielen Dank
Jens

AW: Zellbezüge ergänzen wenn neuesTabellenblatt
05.02.2014 13:01:00
fcs
Hallo Jens,
entweder du schreibst in Zelle A2 einen beliebigen Text oder änderst die folgende Zeile im Code
          'neues Blatt
lngZeile = Application.WorksheetFunction.Max(3, Cells(Rows.Count, 1).End(xlUp).Row +  _
1)
Gruß
Franz

Anzeige
AW: Zellbezüge ergänzen wenn neuesTabellenblatt
05.02.2014 13:33:53
Jens
Super!
Ich habe die Codezeile ausgetauscht.
So gefällt mir das - das ist es!
Herzlichen Dank für deine Mühe, ich bin sehr zufrieden.
Jens

AW: Zellbezüge ergänzen wenn neuesTabellenblatt
05.02.2014 13:59:39
Jens
Hallo Franz,
oh, sorry, doch noch was:
Wenn ich in Zeile 2 was reinschreibe, wird es bei der nächsten Aktualisierung wieder rausgelöscht...
Das sollte natürlich drinbleiben.
Denn Zeile 2 wollte ich als Spaltenüberschriften nutzen.
Vielleicht muss da doch noch eine kleine Anpassung rein...
Würdest du da bitte nochmal draufgucken?

AW: Zellbezüge ergänzen wenn neuesTabellenblatt
05.02.2014 14:43:23
fcs
Hallo Jens,
hier musst du noch die 2 durch 3 ersetzen
  'Prüfen ob Blattnamen in Spalte  noch vorhanden
For lngZeile = Cells(Rows.Count, SpaBlattName).End(xlUp).Row To 3 Step -1

Gruß
Franz

Anzeige
AW: Zellbezüge ergänzen wenn neuesTabellenblatt
05.02.2014 15:32:50
Jens
Aha...danke..ja, sieht erst mal gut aus.
Ich versuche, jetzt nicht mehr lästig zu sein.
Danke vielmals
Jens

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige