Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1672to1676
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
Workbook Sheets(Namen) in Listbox laden
04.02.2019 00:13:32
benny124aka
Hallo zusammen,
ich habe relativ wenig programmier/ VBA Kenntnisse. Bin auf die Hilfe von Profis wie euch angewiesen. Dafür schonmal Danke im vorraus.
Nun zu meinem Problem/ Vorhaben :
Ich würde gerne die Namen der Tabellenblätter der Arbeitsmappe in einer Userform/ Listbox anzeigen.
Außerdem soll eine Combobox mit der Listbox verknüpft werden.
Wenn der Text in der ComboBox in der Listbox noch nicht auftaucht sollen alle angaben in der Userform in einem neuen Tabellenblatt gespeichert werden. das Neue Tabellenblatt soll entsprechend dem Text in der Combobox bennant werden und dann natürlich auch in der ListBox auftauchen.
Gruß Benny

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workbook Sheets(Namen) in Listbox laden
04.02.2019 08:29:57
fcs
Hallo Benny,
hier ein Beispiel-Code.
Die Namen der Steuerelemente musst du ggf. anpassen.
LG
Franz
'Code im Userform-Module
Private Sub cmbSpeichern_Click()
'Schaltfläche zum Speichern
Dim sNameBlatt As String
Dim intJ As Integer
Dim bolVorhanden As Boolean
Dim wkb As Workbook, wksNeu As Worksheet
Set wkb = ActiveWorkbook
sNameBlatt = Me.ComboBox1.Text
If sNameBlatt = "" Then
MsgBox "In der Combobox wurde kein Name eingegben/ausgewählt"
GoTo beenden
End If
With Me.ListBox1
'Prüfen, ob Blatt mit Name in Combobox schon vorhanden ist
For intJ = 0 To .ListCount - 1
If LCase(sNameBlatt) = LCase(.List(intJ, 0)) Then
bolVorhanden = True
Exit For
End If
Next
End With
If bolVorhanden = True Then
MsgBox "Blatt "" & sNameblatt & "" ist schon vorhanden"
'Aktionen ?
Else
'Blatt neu anlegen
wkb.Worksheets.Add after:=wkb.Sheets(wkb.Sheets.Count)
Set wksNeu = wkb.Sheets(wkb.Sheets.Count)
wksNeu.Name = sNameBlatt
With wksNeu
'Daten eintragen - Beispiel
.Range("B3") = Me.Textbox1.Value
'Listbox aktualisieren
Call prcListbox_fuellen
End With
End If
beenden:
End Sub
Private Sub prcListbox_fuellen()
Dim intJ As Integer
Me.ListBox1.Clear
With ActiveWorkbook
For intJ = 1 To .Sheets.Count
ListBox1.AddItem .Sheets(intJ).Name
Next
End With
End Sub
Private Sub UserForm_Initialize()
Call prcListbox_fuellen
End Sub

Anzeige
AW: Workbook Sheets(Namen) in Listbox laden
05.02.2019 23:37:45
benny124aka
Hallo Franz,
vielen vielen Dank erst einmal. Du hast mir sehr geholfen. Ich habe den Thread mal offen gelassen in der Hoffnung das du mir evtl nochmal Hilfst.
Der Code den Du mir gegeben hast löst schon fast alles so wie es soll.
Die nötigen Änderungen der Bezeichnungen habe ich gemacht.
Ein paar Kleinigkeiten laufen noch etwas anders ab als es gedacht war.
Eine konnte ich schon lösen/ändern.
Ich würde mich heute abend nochmal daran versuchen und den code dann morgen , spätestens übermorgen einmal hochladen. Ich wäre dir sehr dankbar wenn du mir dann ggf. nochmal helfen könntest.
Bin auch sonst für jeden Tip dankbar, Literautur ,Schulungen , eKurse. Oder auch einfach deiner Meinung womit man heutzutage am besten anfagen sollte wenn man das programmieren richtig lernen möchte.
Gruß Benny
Anzeige
AW: Workbook Sheets(Namen) in Listbox laden
06.02.2019 15:05:21
benny124aka
Hallo, hier nochmal der code aus meiner Userform.
Sicherlich nicht schön aber funktioniert an vielen stellen zumindest schonmal.
'1Fügt die eingetragenen Werte ins Tabellenblatt und schließt die UserForm frm_Jugemdmitgliedhinzufügen
Private Sub cmd_save_Click()
Dim sNameBlatt As String
Dim intJ As Integer
Dim bolVorhanden As Boolean
Dim wkb As Workbook, wksNeu As Worksheet
Dim intErsteLeereZeile As Long
Set wkb = ActiveWorkbook
sNameBlatt = Me.cbo_Veranstaltung.Text
If sNameBlatt = "" Then
'Wenn cbo_Veranstaltung=leer dann ;soll in dem Aktiven Arbeitsblatt("Mitglieder")  _
gespeichert werden !!!
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' _
'Hilfe
'        temp = MsgBox("Sie haben keinen Veranstaltungstitel eingegeben.
Möchten Sie eine neue Veranstaltung erstellen ?", vbYesNo)
'        If temp = vbYes Then Unload.MsgBox + TabStop cbo_Veranstaltung
'        If temp = vbNo Then Unload.MsgBox + TabStop cmd_save
GoTo Save 'save= in !!!aktivem!!! TB speichern
End If
'Prüfen, ob TB mit Text aus Combobox schon vorhanden ist
With Me.ListBox_Veranstaltung
For intJ = 0 To .ListCount - 1
If LCase(sNameBlatt) = LCase(.List(intJ, 0)) Then
bolVorhanden = True
Exit For
End If
Next
End With
'Hilfe
'       'falls ja : soll in der letzten Zeile des bereits bestehenden TB´s gespeichert werden +  _
Userform schließen
If bolVorhanden = True Then
MsgBox "Blatt "" & sNameblatt & "" ist schon vorhanden"
Save:
'bestimmt die erste freie Zeile im Tabelleblatt
intErsteLeereZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
'txt_Name
ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.txt_Name
'txt_Vorname
ActiveSheet.Cells(intErsteLeereZeile, 2).Value = Me.txt_Vorname
'txt_Geburtsdatum
ActiveSheet.Cells(intErsteLeereZeile, 3).Value = Me.txt_Geburtsdatum
'txt_Alter
ActiveSheet.Cells(intErsteLeereZeile, 4).Value = Me.txt_Alter
'txt_Spielklasse
ActiveSheet.Cells(intErsteLeereZeile, 5).Value = Me.txt_Spielklasse
'txt_Ranglisten
ActiveSheet.Cells(intErsteLeereZeile, 6).Value = Me.txt_Ranglisten
'cbo_Geschlecht
ActiveSheet.Cells(intErsteLeereZeile, 7).Value = Me.cbo_Geschlecht
'txt_Straße
ActiveSheet.Cells(intErsteLeereZeile, 8).Value = Me.txt_Straße
'txt_Ort
ActiveSheet.Cells(intErsteLeereZeile, 9).Value = Me.txt_Ort
'txt_Telefonnummer
ActiveSheet.Cells(intErsteLeereZeile, 10).Value = Me.txt_Telefonnummer
'txt_Handy
ActiveSheet.Cells(intErsteLeereZeile, 11).Value = Me.txt_Handy
'txt_Email
ActiveSheet.Cells(intErsteLeereZeile, 12).Value = Me.txt_Email
'txt_Verein
ActiveSheet.Cells(intErsteLeereZeile, 13).Value = Me.txt_Verein
'opt_DoppelJA
'prüft ob opt_DoppelJA ausgewählt wurde ; falls Ja = Doppel = "JA" ; ansonsten "NEIN"
If opt_DoppelJA.Value = True Then
ActiveSheet.Cells(intErsteLeereZeile, 14).Value = "JA"
Else
ActiveSheet.Cells(intErsteLeereZeile, 14).Value = "NEIN"
End If
'cbo_Doppelpartner
ActiveSheet.Cells(intErsteLeereZeile, 15).Value = Me.cbo_Doppelpartner
'prüft ob opt_DoppelNEIN ausgewählt wurde ; falls ja: Doppelpartner = "Kein Doppel"
If opt_DoppelNEIN.Value = True Then
ActiveSheet.Cells(intErsteLeereZeile, 15).Value = "Kein Doppel"
End If
'cbo_Veranstaltung
ActiveSheet.Cells(intErsteLeereZeile, 16).Value = Me.cbo_Veranstaltung
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' _
'        'txt_weitereMeldungen
'        'ActiveSheet.Cells(intErsteLeereZeile, 17).Value = Me.txt_weitereMeldungen
'        'Welche Konkurenzen wurden gewählt ? Checkboxen nehmen ?
'        If chb_CSchüler.Value = True Then Cells(intErsteLeereZeile, 17).Value = chb_CSchüler. _
Caption
'        If chb_BSchüler.Value = True Then Cells(intErsteLeereZeile, 17).Value = Cells( _
intErsteLeereZeile, 17).Value & " , " chb_BSchüler.Caption
'        If chb_ASchüler.Value = True Then Cells(intErsteLeereZeile, 17).Value = Cells( _
intErsteLeereZeile, 17).Value & " , " chb_ASchüler.Caption
'        If chb_Jugend.Value = True Then Cells(intErsteLeereZeile, 17).Value = Cells( _
intErsteLeereZeile, 17).Value & " , " chb_Jugend.Caption
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' _
'txt_zumTTgekommen
ActiveSheet.Cells(intErsteLeereZeile, 18).Value = Me.txt_zumTTgekommen
Unload frm_Jugendmitgliedhinzufügen
Else
'Blatt neu anlegen
wkb.Worksheets.Add after:=wkb.Sheets(wkb.Sheets.Count)
Set wksNeu = wkb.Sheets(wkb.Sheets.Count)
'        Wenn ein neues TB angelegt wird soll die Tabelle von Sheets "Mitglieder" ohne Inhalt  _
kopiert werden
'        (nur die Überschriften und das Tabellenformat)
wksNeu.Name = sNameBlatt
'Daten eintragen - Beispiel : .Range("B3") = Me.TextBox1.Value
With wksNeu
'leere Tabelle kopieren
Worksheets("Listen").Range("Tabelle_leer").Copy Destination:=wkb.Sheets(wkb.Sheets. _
Count).Range("A5")
'bestimmt die erste leere zeile
intErsteLeereZeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
'txt_Name
ActiveSheet.Cells(intErsteLeereZeile, 1).Value = Me.txt_Name
'txt_Vorname
ActiveSheet.Cells(intErsteLeereZeile, 2).Value = Me.txt_Vorname
'txt_Geburtsdatum
ActiveSheet.Cells(intErsteLeereZeile, 3).Value = Me.txt_Geburtsdatum
'txt_Alter
ActiveSheet.Cells(intErsteLeereZeile, 4).Value = Me.txt_Alter
'txt_Spielklasse
ActiveSheet.Cells(intErsteLeereZeile, 5).Value = Me.txt_Spielklasse
'txt_Ranglisten
ActiveSheet.Cells(intErsteLeereZeile, 6).Value = Me.txt_Ranglisten
'cbo_Geschlecht
ActiveSheet.Cells(intErsteLeereZeile, 7).Value = Me.cbo_Geschlecht
'txt_Straße
ActiveSheet.Cells(intErsteLeereZeile, 8).Value = Me.txt_Straße
'txt_Ort
ActiveSheet.Cells(intErsteLeereZeile, 9).Value = Me.txt_Ort
'txt_Telefonnummer
ActiveSheet.Cells(intErsteLeereZeile, 10).Value = Me.txt_Telefonnummer
'txt_Handy
ActiveSheet.Cells(intErsteLeereZeile, 11).Value = Me.txt_Handy
'txt_Email
ActiveSheet.Cells(intErsteLeereZeile, 12).Value = Me.txt_Email
'txt_Verein
ActiveSheet.Cells(intErsteLeereZeile, 13).Value = Me.txt_Verein
'opt_DoppelJA
'prüft ob opt_DoppelJA ausgewählt wurde ; falls Ja = Doppel = "JA" ; ansonsten "NEIN"
If opt_DoppelJA.Value = True Then
ActiveSheet.Cells(intErsteLeereZeile, 14).Value = "JA"
Else
ActiveSheet.Cells(intErsteLeereZeile, 14).Value = "NEIN"
End If
'cbo_Doppelpartner
ActiveSheet.Cells(intErsteLeereZeile, 15).Value = Me.cbo_Doppelpartner
'opt_DoppelNEIN
'prüft ob opt_DoppelNEIN ausgewählt wurde ; falls ja = Doppelpartner = "Kein Doppel"
If opt_DoppelNEIN.Value = True Then
ActiveSheet.Cells(intErsteLeereZeile, 15).Value = "Kein Doppel"
End If
'cbo_Veranstaltung
ActiveSheet.Cells(intErsteLeereZeile, 16).Value = Me.cbo_Veranstaltung
'txt_weitereMeldungen
'Welche Konkurenzen wurden gewählt ? Checkboxen nehmen ?
'ActiveSheet.Cells(intErsteLeereZeile, 17).Value = Me.txt_weitereMeldungen
'        If chb_CSchüler.Value = True Then Cells(intErsteLeereZeile, 17).Value = chb_CSchüler. _
Caption
'        If chb_BSchüler.Value = True Then Cells(intErsteLeereZeile, 17).Value = Cells( _
intErsteLeereZeile, 17).Value & " , " chb_BSchüler.Caption
'        If chb_ASchüler.Value = True Then Cells(intErsteLeereZeile, 17).Value = Cells( _
intErsteLeereZeile, 17).Value & " , " chb_ASchüler.Caption
'        If chb_Jugend.Value = True Then Cells(intErsteLeereZeile, 17).Value = Cells( _
intErsteLeereZeile, 17).Value & " , " chb_Jugend.Caption
'txt_zumTTgekommen
ActiveSheet.Cells(intErsteLeereZeile, 18).Value = Me.txt_zumTTgekommen
Unload frm_Jugendmitgliedhinzufügen
'Listbox aktualisieren
Call prcListbox_fuellen
End With
End If
beenden:
End Sub

Private Sub prcListbox_fuellen()
Dim intJ As Integer
Me.ListBox_Veranstaltung.Clear
With ActiveWorkbook
For intJ = 1 To .Sheets.Count
ListBox_Veranstaltung.AddItem .Sheets(intJ).Name
Next
End With
End Sub
'1Läd eine Liste der Namen in die combobox cbo_Doppelpartner, wenn opt_DoppelJA gewählt wurde
Private Sub opt_DoppelJA_Click()
If opt_DoppelJA = True Then
cbo_Doppelpartner.RowSource = "A5:A" & Sheets("Mitglieder").Cells(Cells.Rows.Count,  _
1).End(xlUp).Row
cbo_Doppelpartner.ListIndex = 0
End If
End Sub
'1Trägt die vorab programmierten Werte in die Userform frm_Jugemdmitgliedhinzufügen
Private Sub UserForm_Initialize()
'Listbox_Veranstaltung
Call prcListbox_fuellen
With Me
'cbo_Geschlecht
cbo_Geschlecht.AddItem "männlich"
cbo_Geschlecht.AddItem "weiblich"
'cbo_Doppelpartner
cbo_Doppelpartner.AddItem "Zulosen"
cbo_Doppelpartner.AddItem "Kein Doppel"
'opt_DoppelJA
opt_DoppelJA = False
'opt_DoppelNEIN
opt_DoppelNEIN = True
End With
End Sub

Anzeige
AW: Workbook Sheets(Namen) in Listbox laden
09.02.2019 08:58:47
Hajo_Zi
Gut was ist nun offen?
Die meisten bauen Deine Datei nicht nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Die meisten möchten es am Original testen um den gleichen Fehler zu erhalten.
Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Muster*, Test*, Mappe*, Beispiel*, Fehler*, Kalender*, UserForm* usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.
Es sollte ein aussagekräftiger Name sein.
Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige