Anzeige
Archiv - Navigation
528to532
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
528to532
528to532
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Beim Verlassen eines TB neue Blätter anlegen

Beim Verlassen eines TB neue Blätter anlegen
11.12.2004 18:09:30
Fritz
Hallo VBA-Experten,
ich bitte um Hilfe bei der Umsetzung folgender Aufgabe:
In einer Excel-Arbeitsmappe befindet sich das Tabellenblatt "Daten" das folgende Tabelle mit (bis zu 8 Teilnehmern) enthalten kann!
Daten
 ABCDE
2 Teilnehmer
3 NameVornameNameKürzel
41MüllerMichaelMüller, MichaelMicMül
52HauerFritzHauer, FritzFH
63BergerThomasBerger, ThomasTB
74BrauerGünterBrauer, GünterGB
85MüllerManfredMüller, ManfredManMül
96GerberVolkerGerber, VolkerVG
10     
11     
126    
Formeln der Tabelle
A4 : =WENN(ODER(ISTLEER(B4);ISTLEER(C4));"";1)
D4 : =WENN(UND(ISTTEXT(B4);ISTTEXT(C4));B4&", "&C4;"")
E4 : =WENN(ZÄHLENWENN($F$4:$F$11;LINKS(C4;1)&LINKS(B4;1))>1;LINKS(C4;3)&LINKS(B4;3);LINKS(C4;1)&LINKS(B4;1))
A5 : =WENN(ODER(ISTLEER(B5);ISTLEER(C5));"";A4+1)
D5 : =WENN(UND(ISTTEXT(B5);ISTTEXT(C5));B5&", "&C5;"")
E5 : =WENN(ZÄHLENWENN($F$4:$F$11;LINKS(C5;1)&LINKS(B5;1))>1;LINKS(C5;3)&LINKS(B5;3);LINKS(C5;1)&LINKS(B5;1))
A6 : =WENN(ODER(ISTLEER(B6);ISTLEER(C6));"";A5+1)
D6 : =WENN(UND(ISTTEXT(B6);ISTTEXT(C6));B6&", "&C6;"")
E6 : =WENN(ZÄHLENWENN($F$4:$F$11;LINKS(C6;1)&LINKS(B6;1))>1;LINKS(C6;3)&LINKS(B6;3);LINKS(C6;1)&LINKS(B6;1))
A7 : =WENN(ODER(ISTLEER(B7);ISTLEER(C7));"";A6+1)
D7 : =WENN(UND(ISTTEXT(B7);ISTTEXT(C7));B7&", "&C7;"")
E7 : =WENN(ZÄHLENWENN($F$4:$F$11;LINKS(C7;1)&LINKS(B7;1))>1;LINKS(C7;3)&LINKS(B7;3);LINKS(C7;1)&LINKS(B7;1))
A8 : =WENN(ODER(ISTLEER(B8);ISTLEER(C8));"";A7+1)
D8 : =WENN(UND(ISTTEXT(B8);ISTTEXT(C8));B8&", "&C8;"")
E8 : =WENN(ZÄHLENWENN($F$4:$F$11;LINKS(C8;1)&LINKS(B8;1))>1;LINKS(C8;3)&LINKS(B8;3);LINKS(C8;1)&LINKS(B8;1))
A9 : =WENN(ODER(ISTLEER(B9);ISTLEER(C9));"";A8+1)
D9 : =WENN(UND(ISTTEXT(B9);ISTTEXT(C9));B9&", "&C9;"")
E9 : =WENN(ZÄHLENWENN($F$4:$F$11;LINKS(C9;1)&LINKS(B9;1))>1;LINKS(C9;3)&LINKS(B9;3);LINKS(C9;1)&LINKS(B9;1))
A10 : =WENN(ODER(ISTLEER(B10);ISTLEER(C10));"";A9+1)
D10 : =WENN(UND(ISTTEXT(B10);ISTTEXT(C10));B10&", "&C10;"")
E10 : =WENN(ZÄHLENWENN($F$4:$F$11;LINKS(C10;1)&LINKS(B10;1))>1;LINKS(C10;3)&LINKS(B10;3);LINKS(C10;1)&LINKS(B10;1))
A11 : =WENN(ODER(ISTLEER(B11);ISTLEER(C11));"";A10+1)
D11 : =WENN(UND(ISTTEXT(B11);ISTTEXT(C11));B11&", "&C11;"")
E11 : =WENN(ZÄHLENWENN($F$4:$F$11;LINKS(C11;1)&LINKS(B11;1))>1;LINKS(C11;3)&LINKS(B11;3);LINKS(C11;1)&LINKS(B11;1))
A12 : =ANZAHL(A4:A11)
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Ich möchte nun, dass beim Verlassen dieses Tabellenblattes folgendes geprüft wird: Enthält die Arbeitsmappe nicht (alle) Tabellenblätter, mit denen in denen im Bereich E4:E11 gegebenenfalls eingetragenen Namenskürzeln sollte das in der Arbeitsmappe enthaltene Tabellenblatt "TN" jeweils kopiert werden und mit dem entsprechenden Namenskürzel benannt werden! In jedes neu angelegte Tabellenblatt sollte der in Tabelle Daten in der Spalte D (Bereich D4:D11) stehende Name jeweils in die Zelle A1 eingetragen werden. Sollte ein Tabellenblatt mit dem jeweiligen Namenskürzel bereits existieren, sollte kein neues Tabellenblatt eingerichtet werden.
Ich würde mich freuen, wenn Ihr mir helfen könnt. Meine VBA-Kenntnisse sind höchstens als "mangelhaft" einzustufen.
Bereits an dieser Stelle allen Helfern vielen Dank.
Gruß
Fritz

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Beim Verlassen eines TB neue Blätter anlegen
Ramses
Hallo
Rechte Maustaste auf Tabellenreiter DIESER Tabelle
"Code anzeigen" wählen
Den Code von unten dort hinein kopieren und den Namen der Tabelle noch anpassen
Option Explicit
Private Sub Worksheet_Deactivate() Dim i As Integer, n As Integer Dim lastTN As Integer Dim qWks As Worksheet, tWks As Worksheet Dim tnExist As Boolean 'Tabellenname anpassen Set qWks = Worksheets("Tabelle1") lastTN = Range("E65536").End(xlUp).Row For i = 3 To lastTN tnExist = False For n = 1 To Worksheets.Count If Worksheets(n).Name = qWks.Cells(i, 5) Then tnExist = True Exit For End If Next n If tnExist = False Then Worksheets("TN").Copy after:=Sheets(Worksheets.Count) Set tWks = Worksheets(ActiveSheet.Name) With tWks .Name = qWks.Cells(i, 5).Value .Range("A1") = qWks.Cells(i, 2).Text End With End If Next i End Sub
Gruss Rainer
Anzeige
Kleine Korrektur...
Ramses
Hallo
ändere die Zeile
lastTN = Range("E65536").End(xlUp).Row
in
lastTN = qWks.Range("E65536").End(xlUp).Row
Gruss Rainer
AW: Kleine Korrektur...
Fritz
Hallo Rainer,
zunächst Dank für Deine große Mühe.
Das Makro genügt - bis auf die nachfolgend beschriebene Problematik - in jeder Hinsicht meinen Vorstellungen.
Das Makro wird - gegen Ende - mit folgender Fehlermeldung unterbrochen:
Laufzeitfehler '1004':
Die Methode Name für das Objekt '-Worksheet' ist fehlgeschlagen.
Im VBA Editor erscheint die Zeile:
.Name = qWks.Cells(i, 5).Value
gelb unterlegt.
Leider verstehe ich von VBA so gut wie nichts, kann also den Code nicht lesen.
Da das Tabellenblatt TN weiterhin kopiert wird - und die Kopie in TN(2) usw. umbenannt wird - vermute ich, dass der Fehler darin liegen könnte, dass in der Tabelle (siehe Beispiel) nur 6 Namenskürzel eingetragen sind, die restlichen Zellen der Spalte E (E10 und E11) jedoch nicht leer sind, sondern eine Formel enthält, die im vorliegenden Fall jedoch kein Namenskürzel liefert. Vielleicht liege ich aber mit meiner Vermutung auch daneben. Ich denke dennoch, dass Du mir noch weiterhelfen kannst und bedanke mich bereits jetzt für Deine großzügige Hilfe.
Gruß
Fritz
Es bricht (gegen
Anzeige
AW: Kleine Korrektur...
Ramses
Hallo
das hast du richtig interpretiert :-)
Was steht denn in der Zelle ?
Alternativ probier mal folgendes
Option Explicit
Private Sub Worksheet_Deactivate() Dim i As Integer, n As Integer Dim lastTN As Integer Dim qWks As Worksheet, tWks As Worksheet Dim tnExist As Boolean 'Tabellenname anpassen !! Set qWks = Worksheets("Tabelle1") lastTN = qWks.Range("E65536").End(xlUp).Row For i = 3 To lastTN tnExist = False 'Wenn in der Zelle nichts steht 'wird abgebrochen If qWks.Cells(i, 5) = "" Then Exit Sub For n = 1 To Worksheets.Count If Worksheets(n).Name = qWks.Cells(i, 5) Then tnExist = True Exit For End If Next n If tnExist = False Then Worksheets("TN").Copy after:=Sheets(Worksheets.Count) Set tWks = Worksheets(ActiveSheet.Name) With tWks .Name = qWks.Cells(i, 5).Value .Range("A1") = qWks.Cells(i, 2).Text End With End If Next i End Sub
Da gehe ich jetzt einfach davon aus, dass in der Zelle eben "" steht.
Sollte etwas anderes drin stehen, z.B. ein Leerzeichen, schreibe ein Leerzeichen zwischen die Anführungszeichen
Gruss Rainer
Anzeige
AW: Kleine Korrektur...
Fritz
Hallo Rainer,
jetzt klappt´s wie gewünscht. Nochmals vielen Dank.
Gruß
Fritz

40 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige