Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Werte aus Tabellenblatt zentral darstellen
#1
Hallo zusammen,

ich bräuchte bitte Hilfe bei meiner Excel Tabelle. 
Diese besteht aus mehreren Tabellenblättern. Blatt eins ist eine Namensliste mit Spalte A die Namen und Spalte B eine einmalig zum Namen vergebene Nummer. Zu jeder Nummer gibt es ein separates Tabellenblatt. Außerdem gibt es noch ein Blatt, in dem die Nummer in ein Feld eingetippt werden kann (Blatt zwei). Wenn dies passiert, dann wird in dem jeweiligen Tabellenblatt (die restlichen) untereinander das Datum eingefügt, wann die Nummer eingegeben wurde. 

Hier der VBA Code dazu:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Target.Offset(0, 0).Select
If Target.Column = 3 And IsNumeric(Target) Then
Application.EnableEvents = False
Dim BoVorhanden As Boolean
Dim WsTabelle As Worksheet
For Each WsTabelle In Worksheets
If WsTabelle.Name = Target Then
BoVorhanden = True
Exit For
End If
Next WsTabelle
If BoVorhanden Then
With Worksheets(CStr(Target))
Dim LoLetzte As Long
LoLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, Rows.Count) + 1
.Range("A" & LoLetzte) = Date
End With
Else
Worksheets.Add(after:=Sheets(Sheets.Count)).Name = Target
Worksheets(CStr(Target)).Range("A1") = Date
End If
End If
Application.EnableEvents = True
End Sub

Nun möchte ich nicht nur das jeweilige Datum in dem entsprechenden Tabellenblatt als Liste dargestellt bekommen, sondern zusätzlich im Reiter Namensliste jeweils hinter der richtige Zeile, und zwar nebeneinander (nicht untereinander wie in den einzelnen Reitern)

Ich hab schon vieles versucht, den Code dementsprechend abzuändern, bekomme das aber nicht selber hin. kann mir jemand dabei helfen?



anbei die komplette Tabelle  als Anhang

Vielen Dank im Voraus


Angehängte Dateien
.xlsm   zum Probieren 1 Teilnehmerliste Weiß.xlsm (Größe: 242,42 KB / Downloads: 5)
Antworten Top
#2
Hallo

den Code aendern ist simpel, ich habe jetzt auf die IIF Version verzichtet. Die einfache Art geht so:
LoLetzte = Cells(2, Columns.Count).End(xlToLeft).Column + 1  'sucht letzte Spalte in Zeile2 nach Links
.Cells(2, LoLetzte) = Date  'schreibt in Zeile 2 nach Rechts

Andere Frage, warum 270 Tabellenblaetter???  Das Datum kann man auch in einer einzigen Tabelle nach Rechts hinter jeden Namen schreiben. 
Dazu braucht man nicht 270 Blaetter!  Und vor allem hat man alle Daten auf einen Blick ...

mfg Gast 123
Antworten Top
#3
Hallo Gast 123,

vielen Dank für deine schnelle Hilfe.

Wenn ich den Code hinzufüge, passiert in meiner Liste nichts... leider Sad

Oder wie muss ich mein VBA Code entsprechend ändern damit es funktioniert?

Zu deiner Frage:
die einzelnen Tabellenblätter stellen einen Einzel Bericht eines jeden Teilnehmers dar. So war das gewünscht...

Aber klar würde es reichen, eine Tabelle mit zwei Registern zu erstellen:
Seite 1 wäre die Namensliste, Name spalte A und in B die Nummer dazu. alles untereinander (beliebig erweiterbar)
Seite 2 wäre dann das Eingabefeld für die Nummer

Und bei jeder Eingabe der Nummer in Blatt 2 soll dann das entsprechende Tagesdatum hinter die jeweilige Zeile in Blatt 1 eingetragen werden. 
Und man hätte alle Namen mit den Tagesdatum dann auf einen Blich und als Einzelbericht kann man ja die entsprechende Zeile kopieren und untereinander dann als Liste in ein leeres Blatt für das Archiv erstellen (danach wieder löschen)

Wie würde da der Code aussehen?

Danke nochmals im Voraus
Antworten Top
#4
Hallo nochmal,
Jetzt weiß ich den Grund für die vielen Tabellenblätter. Diese sollen irgendwann online an die jeweiligen Personen zur Ansicht  freigegeben werden. Wenn irgendwann mal Office365 bei uns einzug erhält ?
Antworten Top
#5
Hallo

kein Problem, ich denke ich habe jetzt eine Beispieldatei entwickelt die keine Wünsche mehr offen laesst. Auf Appication.EventsEnable habe ich bewusst verzichtet, wei die Daten in andere Tabellen übertragen werden!

Aus einem Makro habe ich zwei getrennte gemacht, eins für das Scanfeld, und eins für die Namensliste. Ich halte das für sinnvoller. 
Bei der Eingabe ins Scanfeld wird das Datum in bereits existierende Tabellen übertragen. Fehlt sie muss man sie zuerst in der Namensliste NEU erstellen, was da ja auch sinnvoller ist. Bei dem zweiten Makro wird der Teilnehmername direkt in die Tabelle kopiert. Beim erstellen neuer Tabellen über das Scanfeld ist das NICHT möglich! Mit Fehlermeldung wenn diese Tabelle bereits existiert, oder das Datum doppelt übertragen wird.

mfg Gast 123

Nachtrag  man kann das letzte Datum auch noch in die Namensliste kopieren oder eine Gesamtübersicht Tabelle anlegen wo man alle Daten auf einen Blick sieht. Das war mir im Augenblick aber zuviel Arbeit. Warte mal ab ob diese Lösung problemlos funktioniert.


Angehängte Dateien
.xlsm   zum Probieren 1 Teilnehmerliste Weiß F.xlsm (Größe: 236,58 KB / Downloads: 1)
Antworten Top
#6
Hallo,

vielen Dank für deine Mühe!

Die Datei ist Super!. Der Ansatz, gleich ein neues Tabellenblatt zu erstellen, wenn in der Namensliste eine neue Nummer vergeben wird, ist super! Auch die Fehlermeldungen für Doppeleingaben ist Super!

Aber: in deiner Version springt das Programm beim Eingeben in das Scanfeld in das zugehörige Tabellenblatt. Das war in meiner alten Version nicht so. Der Plan ist ja, die Nummern die es auf Karten als Barcode gibt, dann immer in das Eingabe-Feld nacheinander einzuscannen. Wenn aber nach jedem Scan der Reiter gewechselt wird und man erst wieder zurück umstellen muss, für den nächsten Scan, wäre dies nicht so gut.

In den einzelnen Tabellenblättern sollen auch die Datumeingaben untereinander stehen, also als Liste. In deiner Version stehen diese nebeneinander (zur Not kann man aber damit leben). Am Ende in der Namensliste sollen diese dann wiederum in der jeweiligen Namenszeile Nebeneinander stehen

Wenn ich in der Namensliste eine neue Zeile hinzufüge, mit einer neuen Nummer, dann wird das neue Tabellenblatt wie gewünscht angelegt, es erscheint aber auch eine Fehlermeldung:

Laufzeitfehler 1004
Die Selectmethode des Range Objects konnte nicht ausgeführt werden

und im VBA Code ist diese letzte Zeile gelb markiert:
Target, Offset(1, 0).Select

aber die Fehlermeldung macht nix, das Tabellenblatt wird trotzdem angelegt und das Datum einwandfrei angefügt

Und am Ende sollen dann neben den Namen die jeweiligen Datumseingaben nebeneinander hinkopiert werden, aus den einzelnen Blättern

Würde so was gehen? Ich hoffe, ich mache nicht zuviel Mühe

Danke, schöne Grüße

PS: der Laufzeitfehler kommt nicht mehr, habe die gelb markierte Zeile aus dem VBA Code einfach weggelöscht und die Meldung ist weg. Funktioniert aber trotzdem alles soweit tadellos

sorry, Sad

mir viel noch was auf: Namensänderungen werden auch nicht in das Tabellenblatt übernommen. Auf meiner Liste hatte ich den Namenseintrag in den Registern als Überschrift mit einer Formel eingefügt, so das sich eine Änderung in der Namensliste auch auf dem jeweiligen Register auswirkt.
Antworten Top
#7
Hallo

schauen wir mal wie gut mir die Nachbesserung gelungen ist. Ich denke die Aufgabenstellung ist jetzt korrekt gelöst.
Neu eingebaut ist eine "Doppelklick Funktion" um aus der Namensliste alle Tabellen ansprigen zu können, und wieder zurück in die Namensliste. Doppelklick auf den Namen oder die Sheet Nummer, spielt keine Rolle. Und zurück aus jeder Zelle. von Sheet 1000 bis 1270. Beim neuen Blatt vergebe ich jetzt in A1 eine Formel zur Namensliste. Das Datum wird jetzt untereinander gelistet, und seitlich in der Namensliste.

Den Fehler im Scanblatt habe ich behoben, das Select war nur für mich zum Makro testen, hatte vergessen es zu löschen! Würde mich freuen wenn jetzt alles klappt. Schauen wir mal ...

mfg Gast 123


Angehängte Dateien
.xlsm   zum Probieren 1 Teilnehmerliste Weiß F2.xlsm (Größe: 241,49 KB / Downloads: 4)
Antworten Top
#8
Wow!
funktioniert alles Super!!!!! Vielen Dank!!!
Das hätte ich im Leben nicht so hinbekommen! Prima, bin total begeistert

Vielen Vielen Dank nochmals für die Mühe, die ich gemacht habe. 

schöne Grüße
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste