Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1144to1148
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
Arbeitsblätter erstellen mittels Liste
Sven
Hallo Excel-Könner,
ich komme nicht weiter und hoffe Ihr könnt mir weiterhelfen:
In Tabelle4 habe ich eine Liste einer Agenda. In Spalte A sind die Themennummerierungen (TOP 1, TOP 1.1, usw.) untereinander geschrieben, in Spalte B die Themen., die Spalte C ist komplett frei, Spalte D beinhaltet Zuständigkeiten und Spalte E die dazugehörigen Ansprechpartner mit den Telefonnummer in Spalte F.
Mein Problem ist, daß ich gerne Tabellenblätter mit den jeweiligen Benamungen der TOP´s anhand von VBA erstellt haben möchte...
Die so erstellten Tabellenblätter (als Vorlage soll layoutbedingt die Tabelle5 dienen) sollen in der Zelle A2 den jeweiligen TOP und in Zelle B3 das Thema stehen haben.
Als Zuckerlie wäre in Zelle B4 noch der Ansprechpartner, mit Telefonnummer echt toll. Hier liegt die Schwierigkeit darin, daß dieser nicht dem Thema, sondern seiner Zuständigkeit zugeordnet ist... diese stimmt nur zum Teil (Also Fragmente) mit den einzelnen Themen der Agenda oder garnicht überein.
Wenn keine Übereinstimmung der Thmen besteht, soll die Zelle frei bleiben
Bsp. Tabelle4
__A_________B_______________C_______D_____E_____F
1 1. ____PC1 Abstimmen_______PC______Leon_123456
2 1.1___Entscheidung RCD_4___RCD 4____Josef_654321
Soll
__A______________B______________C_______
1 ______________Überschriftenzeile
2 Top 1
3 Thema:_________RCD4
4Ansprechpartner:_Josef, 654321
5
Besten Dank im Voraus.
:-)
Gruß
Sven
AW: Arbeitsblätter erstellen mittels Liste
16.03.2010 12:26:26
Sven
Hallo VBA-Könner,
ich habe mir mittlerweile einen Code zusammengebastelt, der mir die Agenda um leere und nicht benötigte Einträge optimiert und mir die Tabellenblätter generiert:
Sub Delleer()
Dim lngLetzte As Long
Dim lngZeile As Long
Application.ScreenUpdating = False
lngLetzte = IIf(IsEmpty(Range("A65536")), Range("A65536").End(xlUp).Row + 1, 65536)
For lngZeile = lngLetzte To 1 Step -1
If Cells(lngZeile, 1) = "" Then
Cells(lngZeile, 1).EntireRow.Delete
End If
Next
Range("B:B").EntireColumn.Delete
Application.ScreenUpdating = True
Call Neu
End Sub

Sub Neu()
Dim i As Integer
With ActiveSheet
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
Tabelle5.Copy after:=ActiveSheet
ActiveSheet.Name = .Cells(i, "A").Value
Next
End With
End Sub
Kann mir jemand sagen, wie ich in Zelle A2 jedes neu zu erstellenden Blattes die Nummerierung des Themas aus der Agenda, und in Zelle B3 das Thema selbst eingetragen bekomme?
Danke
Gruß
Sven
Anzeige
AW: Arbeitsblätter erstellen mittels Liste
16.03.2010 15:47:04
Detlef
Hallo Sven,
folgender Code kommt in Tabelle5 (Dein LayoutMuster):
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'** Übergabe des Zellbereichs und der Zellbezeichnung 
'** an die Prozedur TabellenreiterUmbenennen 
    TabellenreiterUmbenennen Target, "A2"
End Sub
Folgendes in ein Modul:
Modul modTabellenAnlage
Option Explicit 
 
Sub procTabellenAnlage() 
Dim intAnz As Integer, intRow As Integer 
 
On Error Resume Next 
 
    With Sheets("Agenda") 
     
        intRow = .Cells(Rows.Count, 1).End(xlUp).Row 
     
        For intAnz = 2 To intRow 
            Sheets("Tabelle5").Copy after:=Sheets(Sheets.Count) 
            ActiveSheet.Cells(2, 1) = Sheets("Agenda").Cells(intAnz, 1) 
            ActiveSheet.Cells(3, 1) = Sheets("Agenda").Cells(intAnz, 2) 
            ActiveSheet.Cells(4, 1) = Sheets("Agenda").Cells(intAnz, 5) _
            & "_" & Sheets("Agenda").Cells(intAnz, 6) 
        Next intAnz 
    End With 
 
End Sub 
 
Und folgender in ein weiteres Modul:
Modul modAutoTabName
Option Explicit 
 
Sub TabellenreiterUmbenennen(ByVal rngZelle As Range, strZellAdresse As String) 
On Error GoTo fehler 
    Dim intAntwort As Integer 
    Dim strTabellenblatt As String 
    Dim xlWS As Worksheet 
 
'** Wenn die übergebene Adresse der Adresse des aktiven Tabellenblatts entspricht 
    If rngZelle.Address = ActiveSheet.Range(strZellAdresse).Address Then 
     
    '** Übernahme des Zellinhalts in die Variable strTabellenblatt 
        strTabellenblatt = rngZelle.Text 
     
    '** Überprüfen ob der Tabellenblattbezeichner nicht zu lang ist 
        If Len(strTabellenblatt) > 31 Then 
            strTabellenblatt = Left(strTabellenblatt, 31) 
            MsgBox "Der Tabellenblattbezeichner ist zu lang" & vbCrLf & _
                    " und wird auf 31 Zeichen verkürzt", vbInformation 
        End If 
     
    '** Unerlaubte Zeichen befinden durch einen Unterstrich ersetzen 
        strTabellenblatt = Replace(strTabellenblatt, ":", "_") 
        strTabellenblatt = Replace(strTabellenblatt, "\", "_") 
        strTabellenblatt = Replace(strTabellenblatt, "/", "_") 
        strTabellenblatt = Replace(strTabellenblatt, "?", "_") 
        strTabellenblatt = Replace(strTabellenblatt, "*", "_") 
        strTabellenblatt = Replace(strTabellenblatt, "[", "_") 
        strTabellenblatt = Replace(strTabellenblatt, "]", "_") 
             
    '** Prüfen, ob es sich um den Tabellenblattbezeichner der 
    '** aktiven Tabelle handelt 
        If Not ActiveSheet.Name = strTabellenblatt Then 
        '** Durchlaufen aller Tabellenblätter 
            For Each xlWS In Worksheets 
             
            '** Falls es den zu vergebenden Tabellenblattbezeichner schon gibt ... 
                If xlWS.Name = strTabellenblatt Then 
                 
                '** ... Ausgeben einer Meldung 
                    MsgBox "Tabllenname: " & strTabellenblatt & " existiert bereits" & vbCrLf & "Tabellenblatt wurde nicht umbenannt!", vbExclamation 
                 
                '** Verlassen der Prozedur, ohne eine Änderung vorzunehmen 
                    Exit Sub 
                End If 
            Next 
         
        '** Überprüfen, ob die Variable einen Inhalt hat 
            If strTabellenblatt <> "" Then 
             
            '** Ist das der Fall, abfragen ob umbenannt werden soll. 
            '** Aktiviert wird die zweite Schaltfläche der MsgBox, um ein vorschnelles 
            '** Umbenennen durch ein unbeabsichtigtes Bestätigen zu vermeiden 
'                intAntwort = MsgBox("Soll der Tabellenreiter umbenannt werden?", vbQuestion + vbYesNo + vbDefaultButton2) 
             
            '** Wenn die Schaltfläche JA betätigt wurde 
'                If intAntwort = vbYes Then 
                 
                '** Vergabe eines neuen Tabellenblattbezeichners 
                    ActiveSheet.Name = strTabellenblatt 
'                End If 
            End If 
        End If 
    End If 
Exit Sub 
 
fehler: 
    MsgBox Err.Description 
End Sub 
 
Ausgangspunkt ist der Code procTabellenAnlage
       Gruß Detlef
*** RückInfo wäre nett ***

Anzeige
AW: Arbeitsblätter erstellen mittels Liste
17.03.2010 09:41:38
Sven
Detlef , Vielen Dank für die schnelle Antwort.
Ich komme allerdings nicht zurecht, bzw. habe ich bestimmt etwas falsch gemacht:
1. Habe Worksheet_Change in Tabelle 5 übernommen
2. Habe ein Modul angelegt mit dem Namen: modTabellenAnlage und den Code via copy/paste eingefügt
3. Habe ein weiteres Modul angelegt mit dem Namen: modAutoTabName und auch hier den Code via copy/paste eingefügt
In Tabelle1 steht nachwievor das Sub Delleer, zum Löschen der nicht benötigten Inhalte der Agenda.
Dieses wird über
Private Sub CommandButton1_Click()
Call Delleer
End Sub
gestartet.
Wenn ich den Ablauf starte (die Zeile "Call Neu" habe ich durch "Application.Run "procTabellenAnlage" ersetzt), wird nur der soeben genannte Code ausgeführt...
Wenn ich für den Commandbutton Application.Run "procTabellenAnlage" definiere, wird die Agenda ein wenig durcheinander gewürfelt aber mehr auch nicht. D.h. es werden keine Tabellenblätter erstellt...
Wer hilft?
Vielen Dank für Eure Antwort.
Gruß
Sven
Anzeige
AW: Arbeitsblätter erstellen mittels Liste
19.03.2010 00:47:42
Oberschlumpf
Hi Sven
Was hältst du denn von der Idee, uns eine Bsp-Datei zu zeigen, in der es genau so wie in deiner Originialdatei aussieht - inkl. (Bsp)Daten natürlich.
Zumindest ich habe keine Lust, deine Datei anhand deiner "Vorgaben" in deinem ersten Beitrag "nachzubasteln", da ja die Datei auch schon vorhanden ist.
Was also spricht dagegen, wenn du (d)eine Datei uploadest?
Ciao
Thorsten
AW: Arbeitsblätter erstellen mittels Liste
19.03.2010 11:24:46
Detlef
Hallo Sven,
hier meine Beispieldatei, vielleicht hilft sie Dir beim Nachbauen.
https://www.herber.de/bbs/user/68655.xls
Ansonsten hat natürlich Thorsten recht, eine Beispieldatei vom Fragenden ist immer hilfreich, weil wir nicht wissen können, was Dein Code drumherum so macht.
Gruß Detlef
Anzeige
AW: Arbeitsblätter erstellen mittels Liste
22.03.2010 13:45:01
Sven
Hallo Detlef, besten Dank!
Das war genau daß, was ich gesucht habe....
:-)
Gruß
Sven
AW: Arbeitsblätter erstellen mittels Liste
19.03.2010 22:48:08
Sven
Hallo zusammen.
Vielen, vielen Dank für die Hilfe. Leider kann ich erst ab Montag alles nachverfolgen... Es gibt einen familieren Notfall... Melde mich spätestens am Dienstag zu Euren Antworten und mache ggf. den Upload.
Danke nochmals für die Antworten und bitte um Verständnis.
Gruß
Sven
AW: Arbeitsblätter erstellen mittels Liste
20.03.2010 17:41:10
Hajo_Zi
Hallo Sven,
warum offen? Soll jemand vorbeikommen?

83 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige