Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Kombinationsfeld Startwert festlegen

Kombinationsfeld Startwert festlegen
Lutz
Hallo Excel-Profis,
ich google schon seit Stunden um ein einfaches Kombiantionsfeld anzulegen und mit einem Startwert zu belegen.
Mein Code sieht so aus:
Option Explicit
Private Sub ComboBox1_Change()
[M47] = ComboBox1.Value
Unload Me
End Sub

Private Sub UserForm_Initialize()
ComboBox1.RowSource = "A38:A45"
End Sub
Im Bereich A38:A45 stehen die möglichen Auswahlwerte, bei Auswahl schreibt er diese in die Zelle M47.
Das habe ich schon mal toll hinbekommen - hat mich Stunden gekostet.
Jetzt ist das Formular/Kombinationsfeld aber immer leer wenn ich es aufrufe.
Es sollte aber Standardmäßig das erste Feld, also der Zellinhalt von A38 drin stehen.
Weiß jemand wie das geht?
Vielen Dank Gruß Lutz
Anzeige
ComboBox1.ListIndex=0 '_oT
18.11.2009 00:50:58
NoNet
_oT = "ohne Text"
AW: ComboBox1.ListIndex=0 '_oT
18.11.2009 09:10:10
Lutz
Hallo,
vielen Dank für die Antwort, wo soll das stehen?
Wenn ich das eintrage:
Sub KassiererAnzeigen()
frmKassierer.Show
ComboBox1.ListIndex = 0
End Sub
Oder
Option Explicit
Private Sub ComboBox1_Change()
[M47] = ComboBox1.Value
Unload Me
End Sub
Private Sub UserForm_Initialize()
ComboBox1.RowSource = "A38:A45"
'ComboBox1.ListIndex = "0"
'ComboBox1.ListIndex = 0
End Sub
dann stürzt er ab.
Gruß Lutz
Anzeige
Das sollte einwandfrei funktionieren
18.11.2009 17:44:26
NoNet
Hallo lutz,
exakt so wie in Deinem Code sollte das funktionieren - hier ein Code-Beispiel aus meiner Mappe :
Private Sub UserForm_Initialize()
Me.ComboBox1.RowSource = "$A$1:$A$20"
Me.ComboBox1.ListIndex = 0
End Sub
Userbild
Gruß, NoNet
Anzeige
AW: Das sollte einwandfrei funktionieren
18.11.2009 17:49:34
Lutz
Hallo Nonet,
vielen Dank, das Problem war wohl das
Private Sub ComboBox1_Change()
[M47] = ComboBox1.Value
Unload Me
End Sub
so wie es aussieht.
Gruß Lutz
UF nach Auswahl in der CB schließen
18.11.2009 18:33:32
NoNet
Hallo Lutz,
Klaro : Das Ändern des ListIndex der comboBox ist eine "Änderung" (Change), damit wird das Ereignis ausgeführt, das das UserForm sofort schließt - das hatt ich nicht beachtet. Hier meine angepasste Lösung :
Option Explicit
Dim bolUFEnde As Boolean
Private Sub UserForm_Initialize()
bolUFEnde = False   'UserForm wird bei Änderung der ComboBox noch nicht geschlossen !
Me.ComboBox1.RowSource = "$A$38:$A$45"
Me.ComboBox1.ListIndex = 0
bolUFEnde = True 'Erst jetzt wird das UserForm bei Änderung der Combobox geschlossen !
End Sub
Private Sub ComboBox1_Change()
[M47] = ComboBox1.Value
If bolUFEnde Then Unload Me
End Sub
Gruß, NoNet
Anzeige
AW: UF nach Auswahl in der CB schließen
19.11.2009 09:57:59
Lutz
Hallo NoNet,
sorry, bin erst jetzt wieder dazu gekommen.
Das ist absolut perfekt, da wäre ich nicht drauf gekommen.
Ich bin schwer beeindruckt und bedanke mich vielmals für Deine Hilfe.
Ich wünsche Dir noch einen schönen Tag.
Viele Grüße aus Hamburg Lutz
AW: Kombinationsfeld Startwert festlegen
18.11.2009 15:40:49
F1

Private Sub UserForm_Activate()
With ComboBox1
.RowSource = "A38:A45"
.ListIndex = 0
End With
End Sub

Anzeige
AW: Kombinationsfeld Startwert festlegen
18.11.2009 17:26:41
Lutz
Hallo F1 danke, ich habe es jetzt geschafft, mußte noch das Change unload me rausnehmen...
Vielen, vielen, vielen, vielen Dank
Gruß Lutz
;
Anzeige
Anzeige

Infobox / Tutorial

Startwert im Excel Kombinationsfeld festlegen


Schritt-für-Schritt-Anleitung

Um einen Startwert in einem Excel Kombinationsfeld festzulegen, benötigst Du die Verwendung von VBA (Visual Basic for Applications). Hier ist eine einfache Anleitung:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues UserForm hinzu:

    • Klicke auf Einfügen > UserForm.
  3. Füge ein Kombinationsfeld (ComboBox) hinzu:

    • Ziehe das Kombinationsfeld aus der Toolbox auf das UserForm.
  4. Code für das Kombinationsfeld einfügen:

    • Doppelklicke auf das UserForm und füge folgenden VBA-Code ein:
    Option Explicit
    Dim bolUFEnde As Boolean
    
    Private Sub UserForm_Initialize()
       bolUFEnde = False
       Me.ComboBox1.RowSource = "$A$38:$A$45"
       Me.ComboBox1.ListIndex = 0 ' Setzt den Startwert auf den ersten Eintrag
       bolUFEnde = True
    End Sub
    
    Private Sub ComboBox1_Change()
       [M47] = ComboBox1.Value
       If bolUFEnde Then Unload Me
    End Sub
  5. Formular testen:

    • Schließe den VBA-Editor und teste das UserForm, um sicherzustellen, dass der Startwert korrekt angezeigt wird.

Häufige Fehler und Lösungen

  • Kombinationsfeld bleibt leer:

    • Stelle sicher, dass der RowSource korrekt gesetzt ist und die angegebenen Zellen Werte enthalten.
  • UserForm schließt sich sofort:

    • Achte darauf, dass der Code Unload Me nur ausgeführt wird, wenn der UserForm nicht mehr benötigt wird. Hier hilft der bolUFEnde-Flag.
  • Sturz der Anwendung:

    • Überprüfe, ob der Code in der richtigen Reihenfolge ausgeführt wird. Der ListIndex sollte nach dem Setzen des RowSource zugewiesen werden.

Alternative Methoden

Du kannst auch den UserForm_Activate-Ereignis verwenden, um den Startwert zu setzen:

Private Sub UserForm_Activate()
   With ComboBox1
       .RowSource = "A38:A45"
       .ListIndex = 0 ' Setzt den Startwert
   End With
End Sub

Diese Methode funktioniert ähnlich und kann verwendet werden, wenn Du die Initialisierung des Kombinationsfeldes beim Aktivieren des UserForms durchführen möchtest.


Praktische Beispiele

Wenn Du das Excel Kombinationsfeld in einer Anwendung verwenden möchtest, kannst Du die Werte in den Zellen A38 bis A45 vorher definieren. Hier ist ein einfaches Beispiel für mögliche Werte:

  • A38: "Option 1"
  • A39: "Option 2"
  • A40: "Option 3"
  • A41: "Option 4"
  • A42: "Option 5"
  • A43: "Option 6"
  • A44: "Option 7"
  • A45: "Option 8"

Durch die Verwendung des Codes im UserForm wird standardmäßig "Option 1" ausgewählt, wenn das Formular geöffnet wird.


Tipps für Profis

  • VBA Kombobox Werte vorgeben: Wenn Du dynamische Werte in das Kombinationsfeld einfügen möchtest, kannst Du diese zur Laufzeit in das Kombinationsfeld einfügen, anstatt sie statisch in den Zellen zu speichern.

  • Fehlerbehandlung einfügen: Überlege, Fehlerbehandlungsroutinen in deinen Code einzufügen, um mögliche Laufzeitfehler abzufangen und zu behandeln.

  • Verwendung von ComboBox1_Change: Achte darauf, dass alle Änderungen im Kombinationsfeld ordnungsgemäß behandelt werden, um unerwartete Ergebnisse zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Kombinationsfelder mit verschiedenen Startwerten erstellen?
Du kannst mehrere ComboBoxen in deinem UserForm hinzufügen und für jede ComboBox den entsprechenden VBA-Code in die UserForm_Initialize-Subroutine einfügen.

2. Was passiert, wenn ich Unload Me im ComboBox1_Change-Ereignis lasse?
Das Formular schließt sich sofort nach einer Auswahl im Kombinationsfeld. Wenn Du möchtest, dass der Benutzer das Formular weiterhin sehen kann, solltest Du die Zeile entfernen oder bedingt ausführen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige