Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1664to1668
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

Listbox per VBA erstellen. Mal gehts mal nicht

Listbox per VBA erstellen. Mal gehts mal nicht
03.01.2019 19:50:49
Martin
Langsam verzweifel ich...
Ich will mit VBA eine Listbox mit einer Auswahl zwischen "Ja" und "Nein" erstellen.
Der VBA Recorder nimmt bei Daten->Datenüberprüfung->Datenüberprüfung...->Liste-> "Ja;Nein" _ Eingabe folgendes Makro auf:

Sub Makro3()
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Ja;Nein"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub

Es wird korrekt die markierte Zelle mit der Auswahl "Ja" und "Nein" hinterlegt.
Soweit so gut.
Ich habe das ganze nun etwas angepasst, um die Tabelle und die zu befüllende Zelle dynamisch zu generieren:
'hier die aufrufende Test Prozedur

Sub TEST_sub_g_ListboxEintragenMitJaNeinAuswahl()
Dim a As Long
a = 4
Call sub_g_ListboxEintragenMitJaNeinAuswahl(Workbooks("Abgleich.xlsm").Sheets("Tabelle3"),   _
_
a, 4)
End Sub

'in der übergebenen Tabelle und Zelle wird eine Listbox mit der Auswahl Ja, Nein erstellt. _ Optional kann "Ja" als befüllter default Wert angegeben werden. Wird nichts angegeben ist "Nein" als default Wert hinterlegt

Sub sub_g_ListboxEintragenMitJaNeinAuswahl(wks As Worksheet, lngRow As Long, lngColumn As Long,  _
_
Optional strAuswahl As String = "Nein")
With wks.Cells(lngRow, lngColumn)
With .Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Ja,Nein"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
.Value = strAuswahl
End With
End Sub

So jetzt der Mist an der Sache... Wenn ich Formula1:="Ja;Nein" mit einem Semikolon aufgebe, wie es der Makro Recorder aufnimmt, kriege ich nicht die Auswahl "Ja" und "Nein, sondern nur "Ja;Nein" als einzige Auswahlmöglichkeit.
Gebe ich es mit einem Komma auf: Formula1:="Ja,Nein" klappt es, wenn ich die Listbox auf dem leeren Tabellenblatt Tabelle3 per angepasstem Makro anlege.
Führe ich es aber mit unverändertem Code auf einem anderen Tabellenblatt aus (Nur das an die Prozedur übergebende Worksheet ist diesmal ein anderes, Kriege ich nicht "Ja" und "Nein", sondern "Ja,Nein" als einzige Auswahl....
Hier die der Aufruf der Prozedur:
Call sub_g_ListboxEintragenMitJaNeinAuswahl(Workbooks("Abgleich.xlsm").Sheets("Zusammenfassung_Infotexte"), lngZeile, 27)
lngZeile ist dabei eine Variable mit der betroffenen Zeilennummer. In der betroffenen Zelle wird ja auch die Listbox angelegt, an den aufrufenden Parametern liegt es aus meiner Sicht also nicht.
Sub sub_g_ListboxEintragenMitJaNeinAuswahl(wks As Worksheet, lngRow As Long, lngColumn As Long,  _
_
Optional strAuswahl As String = "Nein")
With wks.Cells(lngRow, lngColumn)
With .Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Ja,Nein"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
.Value = strAuswahl
End With
End Sub
Der einzige Unterschied aus meiner Sicht ist, dass im einen Fall in Tabelle3 in einer Zelle die Listbox anlegt (wo dann "Ja" und "Nein" angezeigt wird) und im 2. Fall in Tabelle "Zusammenfassung_Infotexte" die Listbox angelegt werden soll (wo dann mit dem selben Code auf einmal "Ja,Nein" die einzige Auswahl in der Listbox ist....
Hoffe mir kann jemand weiterhelfen.
Gruß Martin

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox per VBA erstellen. Mal gehts mal nicht
03.01.2019 20:23:22
Martin
Nicht normal.... Auf Tabellenblatt Tabelle3 muss ich
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Ja,Nein"
angeben, also Ja,Nein mit Komma
Auf dem anderen Tabellenblatt muss ich,ansonsten gleicher Code, folgendes
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Ja;Nein"
angeben, also Formula1:="Ja;Nein" mit Semikolon um jeweils zu dem Ergebnis "Ja" und "Nein" zu kommen und nicht so nen Mist wie nur "Ja;Nein" oder nur "Ja,Nein" zu erhalten.
Auf dem selben Tabellenblatt geht entweder nur die Variante mit dem Komma, oder nur die mit dem Semikolon und auf dem anderen Tabellenblatt ist es genau andersherum....
Wenn das nicht mal nen doofer Excel Bug ist.... Hat mich jedenfalls viel Zeit gekostet...
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige