Discussion:
Combobox Listindex
(zu alt für eine Antwort)
Lars Denker
2005-02-05 12:39:03 UTC
Permalink
Hallo NG'ler,

ich habe eine Frage zu Combobox:
wie kann ich den ersten Eintrag sichtbar machen? Ich weiß, daß dies mit
Listindex gehen muß. Aber wie und vorallen wo muß ich die Anweisung
reinschreiben?. Ich habe es mit folgendem probiert erhalte aber eine
Fehlermeldung "ObjeKtvariable oder With-Block...", die Userform wird erst
garnicht geladen:

Private Sub UserForm_Initialize()

Dim rngzelle As Range

ComboBox1.Clear

For Each rngzelle In ActiveSheet.Range("e2:t2")
If rngzelle.Value > "" Then _
ComboBox1.AddItem rngzelle.Value
Next rngzelle

If ComboBox1.ListCount > 0 Then
ComboBox1.ListIndex = 0
End If
End Sub

Komme nicht weiter...
Für jeden Hinweis dankbar,
Lars Denker
Herbert Taferner
2005-02-05 13:03:49 UTC
Permalink
Hallo Lars,
Post by Lars Denker
wie kann ich den ersten Eintrag sichtbar machen? Ich weiß, daß dies mit
Listindex gehen muß. Aber wie und vorallen wo muß ich die Anweisung
reinschreiben?. Ich habe es mit folgendem probiert erhalte aber eine
Fehlermeldung "ObjeKtvariable oder With-Block...", die Userform wird erst
wo hast du denn den Code hingeschrieben,
wenn du den Code in der Userform stehen hast funktioniert er Astrein
und die Form dann irgendwie aufrufst
z. B. aus der Tabelle

Private Sub Worksheet_Change(ByVal Target As Range)
UserForm1.Show
End Sub

mfg Herbert
Lars Denker
2005-02-05 13:11:51 UTC
Permalink
Hallo Herbert,

Die Userform wir aus einem Sub mit Userform.show aufgerufen, der Code steht
in der Userform unter:
Private Sub UserForm_Initialize()
...
Die Userform wird tatsächliche ohne
If ComboBox1.ListCount > 0 Then
ComboBox1.ListIndex = 0
End If
problemlos durchgeführt. Wenn ich aber diesen "Zusatz" reinscheibe, um eben
den ersten Eintrag anzuzeigen, kommt besagte Fehlermeldung.

Grüße
Lars
Post by Herbert Taferner
Hallo Lars,
Post by Lars Denker
wie kann ich den ersten Eintrag sichtbar machen? Ich weiß, daß dies mit
Listindex gehen muß. Aber wie und vorallen wo muß ich die Anweisung
reinschreiben?. Ich habe es mit folgendem probiert erhalte aber eine
Fehlermeldung "ObjeKtvariable oder With-Block...", die Userform wird erst
wo hast du denn den Code hingeschrieben,
wenn du den Code in der Userform stehen hast funktioniert er Astrein
und die Form dann irgendwie aufrufst
z. B. aus der Tabelle
Private Sub Worksheet_Change(ByVal Target As Range)
UserForm1.Show
End Sub
mfg Herbert
Herbert Taferner
2005-02-05 13:31:31 UTC
Permalink
Hallo Lars,
Die Userform wir aus einem Sub mit Userform.show aufgerufen, der Code steht in
Private Sub UserForm_Initialize()
...
Die Userform wird tatsächliche ohne
If ComboBox1.ListCount > 0 Then
ComboBox1.ListIndex = 0
End If
problemlos durchgeführt. Wenn ich aber diesen "Zusatz" reinscheibe, um eben
den ersten Eintrag anzuzeigen, kommt besagte Fehlermeldung.
auch das läuft bei mir problemlos,
aber vielleicht hast du in der Aktiven Tabelle auch eine Combobox
und dadurch wird VBA irritiert versuchs mal mit genauer Referenz
mit UserForm1. oder Me.
z. B.
If UserForm1.ComboBox1.ListCount > 0 Then
UserForm1.ComboBox1.ListIndex = 0
End If

mfg Herbert
Lars Denker
2005-02-05 14:03:18 UTC
Permalink
Hallo Herbert,

wir kommen der Sache vielleicht näher ("Abteilung"=Userform-Name):
Private Sub UserForm_Initialize()


Dim rngzelle As Range



Abteilung.ComboBox1.Clear



For Each rngzelle In ActiveSheet.Range("e2:t2")

If rngzelle.Value > "" Then _

Abteilung.ComboBox1.AddItem rngzelle.Value

If Abteilung.ComboBox1.ListCount > 0 Then

Abteilung.ComboBox1.ListIndex = 0
End If

Next rngzelle

End Sub



Das funktioniert soweit, der erste Eintrag ist sichtbar. Allerdings werden
die anderen möglichen Einträge mehrmals aufgeführt.

Was ich zudem nicht verstehe ist, daß sobald ich die
If-Abfrage(ListCount...List.Index) außerhalb der For-Next-Schleife schreibe,
kommt wieder der Fehler "Objektvariable...". So als ob, die Referenzierung
hier keine Gültigkeit mehr hat...

Hast Du noch eine Idee dazu?

Güße

Lars
Post by Herbert Taferner
Hallo Lars,
Post by Lars Denker
Die Userform wir aus einem Sub mit Userform.show aufgerufen, der Code
Private Sub UserForm_Initialize()
...
Die Userform wird tatsächliche ohne
If ComboBox1.ListCount > 0 Then
ComboBox1.ListIndex = 0
End If
problemlos durchgeführt. Wenn ich aber diesen "Zusatz" reinscheibe, um
eben den ersten Eintrag anzuzeigen, kommt besagte Fehlermeldung.
auch das läuft bei mir problemlos,
aber vielleicht hast du in der Aktiven Tabelle auch eine Combobox
und dadurch wird VBA irritiert versuchs mal mit genauer Referenz
mit UserForm1. oder Me.
z. B.
If UserForm1.ComboBox1.ListCount > 0 Then
UserForm1.ComboBox1.ListIndex = 0
End If
mfg Herbert
Herbert Taferner
2005-02-05 14:41:12 UTC
Permalink
Hallo Lars,
Das funktioniert soweit, der erste Eintrag ist sichtbar. Allerdings werden die
anderen möglichen Einträge mehrmals aufgeführt.
Was ich zudem nicht verstehe ist, daß sobald ich die
If-Abfrage(ListCount...List.Index) außerhalb der For-Next-Schleife schreibe,
kommt wieder der Fehler "Objektvariable...". So als ob, die Referenzierung
hier keine Gültigkeit mehr hat...
Hast Du noch eine Idee dazu?
also bei mir funktioniert das einwandfrei

'----------------------------------
Private Sub UserForm_Initialize()
Dim rngzelle As Range
Abteilung.ComboBox1.Clear
For Each rngzelle In ActiveSheet.Range("e2:t2")
If rngzelle.Value > "" Then
Abteilung.ComboBox1.AddItem rngzelle.Value
End If
Next
If Abteilung.ComboBox1.ListCount > 0 Then
Abteilung.ComboBox1.ListIndex = 0
End If

End Sub

'---------------------------------------

was hast du den für Excel Version
bzw. hast du noch mehr Comboboxen auf der Form

mfg Herbert
Lars Denker
2005-02-05 14:49:51 UTC
Permalink
Hallo Herbert,

Excel Version 2000 und nein, nichts weiter in der Userform, nur diese eine
Combobox.

Grüße
Lars
Post by Herbert Taferner
Hallo Lars,
Post by Lars Denker
Das funktioniert soweit, der erste Eintrag ist sichtbar. Allerdings
werden die anderen möglichen Einträge mehrmals aufgeführt.
Was ich zudem nicht verstehe ist, daß sobald ich die
If-Abfrage(ListCount...List.Index) außerhalb der For-Next-Schleife
schreibe, kommt wieder der Fehler "Objektvariable...". So als ob, die
Referenzierung hier keine Gültigkeit mehr hat...
Hast Du noch eine Idee dazu?
also bei mir funktioniert das einwandfrei
'----------------------------------
Private Sub UserForm_Initialize()
Dim rngzelle As Range
Abteilung.ComboBox1.Clear
For Each rngzelle In ActiveSheet.Range("e2:t2")
If rngzelle.Value > "" Then
Abteilung.ComboBox1.AddItem rngzelle.Value
End If
Next
If Abteilung.ComboBox1.ListCount > 0 Then
Abteilung.ComboBox1.ListIndex = 0
End If
End Sub
'---------------------------------------
was hast du den für Excel Version
bzw. hast du noch mehr Comboboxen auf der Form
mfg Herbert
Lars Denker
2005-02-05 15:28:14 UTC
Permalink
Hallo Herbert,

hier ist die Lösung, bzw. hier lag das Problem:

Sub ComboBox1_Click()
ActiveSheet.Unprotect
ActiveSheet.Cells(ActiveCell.Row, 4) = Abteilung.ComboBox1.Text
Abteilung.Hide
End Sub

An der Stelle von "Abteilung.Hide" stand zuvor "Unload.me". Jetzt
funktioniert es.
Sorry!! Mir war nicht bewußt, daß das Click-Ereignis in diesem Zusammenhang
eine Rolle spielt, deshalb habe ich es nicht erwähnt. Ich bin jetzt durch
Deinen Hinweis auf die genaue Referenzierung drauf gekommen...

Vielen Dank für Deine Mühe und Geduld!
Ein schönes Wochenende und Grüße aus München
Lars
Post by Herbert Taferner
Hallo Lars,
Post by Lars Denker
Das funktioniert soweit, der erste Eintrag ist sichtbar. Allerdings
werden die anderen möglichen Einträge mehrmals aufgeführt.
Was ich zudem nicht verstehe ist, daß sobald ich die
If-Abfrage(ListCount...List.Index) außerhalb der For-Next-Schleife
schreibe, kommt wieder der Fehler "Objektvariable...". So als ob, die
Referenzierung hier keine Gültigkeit mehr hat...
Hast Du noch eine Idee dazu?
also bei mir funktioniert das einwandfrei
'----------------------------------
Private Sub UserForm_Initialize()
Dim rngzelle As Range
Abteilung.ComboBox1.Clear
For Each rngzelle In ActiveSheet.Range("e2:t2")
If rngzelle.Value > "" Then
Abteilung.ComboBox1.AddItem rngzelle.Value
End If
Next
If Abteilung.ComboBox1.ListCount > 0 Then
Abteilung.ComboBox1.ListIndex = 0
End If
End Sub
'---------------------------------------
was hast du den für Excel Version
bzw. hast du noch mehr Comboboxen auf der Form
mfg Herbert
Herbert Taferner
2005-02-05 15:43:10 UTC
Permalink
Hallo Lars,
An der Stelle von "Abteilung.Hide" stand zuvor "Unload.me". Jetzt funktioniert
es.
Sorry!! Mir war nicht bewußt, daß das Click-Ereignis in diesem Zusammenhang
eine Rolle spielt, deshalb habe ich es nicht erwähnt. Ich bin jetzt durch
Deinen Hinweis auf die genaue Referenzierung drauf gekommen...
Vielen Dank für Deine Mühe und Geduld!
Ein schönes Wochenende und Grüße aus München
Bitte gern !

freut mich wenn's geholfen hat

mfg Herbert

Lesen Sie weiter auf narkive:
Loading...