Combobox Wert vorgeben und Einlesen...
#1
Hallo, liebes Forum

Ich wäre froh, wenn ihr mir weiterhelfen könntet...

In einem Sheet "Interner_Bereich" habe ich verschiedene Parameter für die weitere Verwendung gespeichert.

Teile davon (bzw. geht es in diesem Fall um 8 Zellwerte) möchte ich nun mit verschiedenen Comboboxen in einer Userform ändern. Soweit, so gut.
Einlesen, Zurückschreiben... - grundsätzlich kein Problem - dachte ich.

Mein Problem ist, dass ich die Werte erst einlesen will und der Nutzer dann NUR zwischen vorgegebenen Werten wählen darf. Erst dachte ich ich...

- per Userform-Initialize mittels Add-Item den Comboboxen die wählbaren Texte zu (zwischen 2 und 4, je nach Combobox)
- per Userform-Activate lese ich die vorhandenen Zellwerte ein
- per Command-Button schreibe ich alle aktuellen Combobox-Werte zurück

Da es aber grossteils nur Ja/Nein-Abfragen sind, scheint mir der Code bzw. Aufwand unheimlich kompliziert. - Ja, die booleschen Werte könnte man besser mit Optionsfeldern lösen, aber aus optischen Gründen sind mir Comboboxen lieber.

Oder soll ich die Befüllung mittels Rowsource vornehmen, was mir den internen Bereich aber noch mehr zumüllt... Sad
Eine direkte Vorgabe der Textwerte in den VBA-Eigenschaften der Combobox ist ja leider nicht möglich, oder? Ähnlich der Datenüberprüfung einer Zelle im Sheet...?

Wie löst ihr das?

Danke im voraus für euren Input!

Gruss Christian
Top
#2
Hallo,

kann sein, ohne deine Datei zu kennen, wird es schwierig etwas zu empfehlen.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#3
Hallo Klaus-Dieter

Danke das du dich meiner annimmst!

...und ich dachte noch, die Frage ist so allgemein gehalten, da wird wohl niemand eine Beispielmappe brauchen... Wink

Die Datei ist so umfangreich, dass es vermutlich kontraproduktiv wäre, diese hier hochzuladen.
Ich denke es gibt eine effiziente oder eine weniger effiziente Lösung, unabhängig der Beispielmappe, da diese Prozedur doch für sich betrachtet werden kann, nicht?

Welche Parameter wären denn massgebend bei der Entscheidung wie du dies umsetzen würdest?

Gruss Christian
Top
#4
Hallo,

die Kombinationsfelder kannst du nach diesem Muster befüllen:

Code:
Private Sub UserForm_Initialize()
   ComboBox1.List = Tabelle1.Range("A2:A5").Value
End Sub
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#5
Hallo Klaus-Dieter

Und den derzeit hinterlegten bzw. geschriebenen Wert kann ich mit Userform-Activate einlesen?

with sheets("Interner_Bereich")
Combobox1.value = .range("A1").value
end with

Gruss Christian
Top
#6
Hallo Christian,

deshalb wollte ich eine Beispieldatei sehen, du hast offenbar ein anderes Verständnis von den Objekten als ich. Warum willst du zum Beispiel einen einzelnen Wert in ein Kombinationsfeld einlesen?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#7
Klaus-Dieter

Danke für deine Geduld! - Hab schnell was gebastelt, allerdings nur mal mit 4 Comboboxen. - Hier mit AddItem - ohne RowSource.

Ich will den aktuellen Wert einlesen (bzw. nur diesen einen Wert einlesen), weil das Sheet "Interner_Bereich" für den User nicht sichtbar ist.
Das Sheet ist wie der Name schon sagt mein Interner Bereich, in dem ich verschiedene Werte festhalte.
Und so sieht er den derzeit ausgewählten Wert.

Was dieser interne Bereich angeht, so ist dies sicher typisch Anfänger. Wer richtig programmieren kann, benötigt vermutlich kein separates Sheet als Workaround...

Ja, du hast sicher recht, was unser Verständnis von Objekten angeht... ich würde mich als leicht fortgeschrittenen Anfänger betrachten... Smile

Bei 8 Comboboxen habe ich das Gefühl es bläht mir den Code zu sehr auf, aber vielleicht ist dies wirklich die einfachste Möglichkeit...

Gruss Christian


Angehängte Dateien
.xlsm   Combobox.xlsm (Größe: 24,92 KB / Downloads: 3)
Top
#8
Hallo Christian,

dann betreibst du den ganzen Aufwand nur, damit die Kombinationsfelder beim Öffnen des UserForm einen bestimmten Inhalt anzeigen?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#9
Hallo Klaus-Dieter

Sorry, war den ganzen Tag am arbeiten...

Die Mappe ist eine mittlerweile komplexe Angebots- und Rechnungsvorlage und es macht Sinn, dem User die aktuellen Parameter anzuzeigen.

Zu deiner Frage: Ja, der ganze Aufwand eigentlich nur um die aktuellen Werte einzulesen... Smile
Aber wie aus meinem Eröffnungsposting zu lesen, sehe ich den Codeaufwand ebenso kritisch, sollte es keine effizienter Lösung geben.

Gruss Christian
Top
#10
Hallo Christian,

(11.11.2019, 22:29)peacescorer schrieb: Ich will den aktuellen Wert einlesen (bzw. nur diesen einen Wert einlesen), weil das Sheet "Interner_Bereich" für den User nicht sichtbar ist.
Das Sheet ist wie der Name schon sagt mein Interner Bereich, in dem ich verschiedene Werte festhalte.
Und so sieht er den derzeit ausgewählten Wert.

Was dieser interne Bereich angeht, so ist dies sicher typisch Anfänger. Wer richtig programmieren kann, benötigt vermutlich kein separates Sheet als Workaround...

Genau so ist es doch am Einfachsten, wenn man so viel wie möglich schon im Code-Designer voreinstellen kann und als nichtflüchtigen Zwischenspeicher ein Worksheet benutzt. Deinen Satz "Oder soll ich die Befüllung mittels Rowsource vornehmen, was mir den internen Bereich aber noch mehr zumüllt... " kann ich nur bejahen und wenn es zu unübersichtlich werden sollte, nimmst Du eben für jedes UF ein extra Blatt. Wink
Das hat auch nichts mit Anfänger zu tun. Im Gegenteil: Programmierer sind nämlich faul und machen es sich deshalb gerne so einfach wie möglich.
Im Anhang ist Deine Beispieldatei zurück, in der nur noch eine Zeile Code für den Schließen-Button übrig blieb.


.xlsm   Combobox_Kuwer.xlsm (Größe: 24,12 KB / Downloads: 6)

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • peacescorer
Top


Gehe zu:


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