ListBox aktivieren

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
ListBox
Bild

Betrifft: ListBox aktivieren
von: Erich M.
Geschrieben am: 28.03.2005 18:15:05
Hallo EXCEL-Freunde,
bei Aktivierung einer ComboBox mit einer Spaltenbezeichnung soll
automatisch
eine Listbox mit den ausgewählten Daten befüllt werden. Bei dieser
Auswahl nach spalte funktioniert es; es wird die ausgewählte Spalte
mit den Zeilen 3 bis 8 angezeigt:


Private Sub ComboBox4_Change()
Dim m As Integer
Dim LoI As Integer
ListBox1.Clear
m = ComboBox4.ListIndex + 1
For LoI = 3 To 8
    With ListBox1
        .AddItem Cells(LoI, m)
    End With
Next LoI
End Sub

Ähnlich möchte ich bei der ComboBox3 erreichen, dass bei Auswahl einer Spalte
die gewählte spalte + zwei weitere Spalten rechts davon angezeigt werden.
Also wenn ich D auswähle, sollen D + E + F (Zeilen 1 bis 7) angezeigt werden:

Private Sub ComboBox3_Change()
Dim sp As Integer, m As Integer
Dim LoI As Integer
Dim az As Integer
ListBox2.Clear
m = ComboBox3.ListIndex + 1
ListBox2.ColumnCount = 3
    For LoI = 1 To 7
        ListBox2.AddItem Format(Cells(LoI, m))
        For sp = m To m + 2
            ListBox2.List(LoI - 1, sp - 1) = Cells(LoI, sp)
        Next sp
Next LoI
End Sub

Allerdings bringe ich den Code nicht hin.....
Besten Dank für eine Hilfe!!
mfg
Erich
http://www.toolex.de
Bild

Betrifft: AW: ListBox aktivieren
von: Ramses
Geschrieben am: 28.03.2005 19:01:37
Hallo
was willst du denn damit erreichen ?
"..ListBox2.AddItem Format(Cells(LoI, m)).."
Format,... Was ???
Warum weisst du keine RowSource zu. Geht einfacher.
Ansonsten mit

ListBox2.ColumnCount = 3
For LoI = 1 To 7
ListBox2.AddItem Format(Cells(LoI, m))
'1. Spalte
Me.Listbox2.AddItem Cells(LoI, 1).Value
'2. Spalte
Me.Listbox2.List(LoI - 1, 1) = Cells(LoI, 2).Value
'3. Spalte
Me.Listbox2.List(LoI - 1, 2) = Cells(LoI, 3).Value
'usw
Next LoI
Gruss Rainer
Bild

Betrifft: RowSource?
von: Erich M.
Geschrieben am: 28.03.2005 20:56:06
Hallo Rainer,
den Code hatte ich aus einem anderen Teil und wollte ihn anpassen - vergeblich.
Habe jetzt mal in der Hilfe nach RowSource geschaut;
Code stimmt aber noch nicht ganz:

Private Sub ComboBox3_Change()
Dim sp As Integer, m As Integer, letzteSpalte As String
Dim LoI As Integer
Dim az As Integer
Dim strBuchstaben As String, intNummer As Integer
ListBox2.Clear
    ' Umwandlung Buchstabenspalte in Spaltenzahl
    strBuchstaben = ComboBox3.Text
    If Len(strBuchstaben) = 1 Then
        intNummer = Asc(strBuchstaben) - 64
    Else
        intNummer = (Asc(Left(strBuchstaben, 1)) - 64) * 26
        intNummer = intNummer + Asc(Right(strBuchstaben, 1)) - 64
    End If
    letzteSpalte = CStr(intNummer)   ' Spalte in ComboBox3 ausgewählt
ListBox2.ColumnCount = 3
ListBox2.AddItem Format(Cells(1, 1))
Me.ListBox2.RowSource = Cells(1, letzteSpalte)(4, letzteSpalte + 2).Value
End Sub

Bei der Zeile Me.... kommt
Laufzeitfehler 1004.
Besten Dank nochmal!

mfg
Erich
http://www.toolex.de
Bild

Betrifft: AW: RowSource?
von: Ramses
Geschrieben am: 28.03.2005 21:49:43
Hallo
RowSource definiert einen Bereich innerhalb einer Tabelle der in der Listbox dargestellt werden soll, ... und keinen Wert.
Me.ListBox1.RowSource = "Tabelle1!A1:A5"
oder auch
Me.ListBox1.RowSource = "Tabelle1!A" & i " & :G" & n
wenn du mit Variablen arbeitest
Gruss Rainer
Bild

Betrifft: AW: RowSource?
von: Erich M.
Geschrieben am: 29.03.2005 07:19:22
Hallo Rainer,
danke. Die letzte Zeile mit den Variablen schaffe ich nicht.
In ComboBox2 wird die Tabelle ausgewählt; die Variablen sind die Spalten;
die Zeilen sind mit 1 und 4 fix; trotzdem geht nicht:
Me.ListBox2.RowSource = ComboBox2.Text(1, letzteSpalte)(4, letzteSpalte + 2)
Me.ListBox2.RowSource = ComboBox2.Text.Cells(1, letzteSpalte)(4, letzteSpalte + 2)
myTabelle = ComboBox2.Text
Me.ListBox2.RowSource = myTabelle(1, letzteSpalte)(4, letzteSpalte + 2)
Weitere Varianten haben ebenfalls nicht funktioniert.
Wo liegt der Fehler?
Besten Dank nochmals!

mfg
Erich
http://www.toolex.de
Bild

Betrifft: Lesen....
von: ramses
Geschrieben am: 29.03.2005 11:47:19
Hallo
wenn du gelesen hättest, wie ich die RowSource zuweise, dann würde es auch funktionieren :-)
tut mir leid, ich weiss nicht was bei dir aus der Combobox2 rauskommt, aber so wie du es machst funktioniert es definitiv nicht.
Dim t1 As String, t2 As String
t1 = Cells(1,letzteSpalte).Address
t2 = Cells(4,letzteSpalte+2).Address
nun hast du in t1 z.B. die Adresse "$C$1" und in t2 die Adresse "$E$4"
die Zuweisung erfolgt nun
Me.ListBox1.RowSource = "" & myTabelle & "!" & t1 & ":" & T2 & ""
Vorausgesetzt myTabelle enthält den korrekten Tabellennamen
Gruss Rainer
Bild

Betrifft: .......hat noch nicht geholfen
von: Erich M.
Geschrieben am: 29.03.2005 20:10:13
Hallo Rainer,
sorry, aber ich bring das ding nicht zum Laufen. In der ComboBox2 wird die Tabelle "Test1"
ausgewählt. Wenn ich den code starte und die Fehlermeldung kommt, dann wird bei
myTabelle - wenn ich mit der Maus drüberfahre - auch Test1 angezeigt. Ebenso
wird bei letzteSpalte 23 und bei strBuchstaben W angezeigt. Also nimmt er alles richtig
zur Kenntnis. So sieht jetzt der Code aus, aber bei t1 wird dann "" angezeigt, das
scheint er nicht richtig zu erkennen:

Private Sub ComboBox3_Change()
Dim sp As Integer, m As Integer, letzteSpalte As String, myTabelle As String
Dim strBuchstaben As String, intNummer As Integer
Dim t1 As String, t2 As String
myTabelle = ComboBox2.Text
ListBox2.Clear
    ' Umwandlung Buchstabenspalte in Spaltenzahl
    strBuchstaben = ComboBox3.Text
    If Len(strBuchstaben) = 1 Then
        intNummer = Asc(strBuchstaben) - 64
    Else
        intNummer = (Asc(Left(strBuchstaben, 1)) - 64) * 26
        intNummer = intNummer + Asc(Right(strBuchstaben, 1)) - 64
    End If
    letzteSpalte = CStr(intNummer)   ' Spalte in ComboBox3 ausgewählt
t1 = Cells(1, letzteSpalte).Address  ''---> Laufzeitfehler 1004 !!!!!!!!!!!
t2 = Cells(4, letzteSpalte + 2).Address
ListBox2.ColumnCount = 3
Me.ListBox2.RowSource = "" & myTabelle & "!" & t1 & ":" & t2 & ""
End Sub

Komm nicht drauf.
Besten Dank nochmal!
mfg
Erich
http://www.toolex.de
Bild

Betrifft: AW: .......hat noch nicht geholfen
von: Ramses
Geschrieben am: 29.03.2005 21:17:43
Hallo
1. Keine Ahnung was du unter "strBuchstaben" übergibst
2. Keine Ahnung was du dort alles rausziehst um "intNummer" zu erhalten
3. Du hast "letzteSpalte" als String deklariert
4. Für was soll das denn gut sein ?
"..letzteSpalte = CStr(intNummer)..."
Warum nimmst du nicht gleich "intNummer", das wäre richtig weil als "Integer" deklariert
btw:
Was hast du eigentlich mit "toolex.de" zu tun ?
Gruss Rainer
Bild

Betrifft: Alles beantwortet
von: Erich M.
Geschrieben am: 30.03.2005 07:47:02
Hallo Rainer,
besten Dank für die Geduld! Problem gelöst; hier noch meine Antworten:
1. Keine Ahnung was du unter "strBuchstaben" übergibst
Es wird die letzte belegte Spalte der Tabelle angezeigt.
2. Keine Ahnung was du dort alles rausziehst um "intNummer" zu erhalten
Umwandlung von Buchstabe in Zahl (aus D wird 4)
3. Du hast "letzteSpalte" als String deklariert
das war der Knackpunkt: musste ich auf Integer ändern
4. Für was soll das denn gut sein ?
"..letzteSpalte = CStr(intNummer)..."
Warum nimmst du nicht gleich "intNummer", das wäre richtig weil als "Integer" deklariert
das habe ich mal aus dem Forum (ich meine von Nepumuk erhalten) und verwende es immer so;
btw:
Was hast du eigentlich mit "toolex.de" zu tun ?
TOOLEX ist eine Idee / Projekt von mir, das im vorigen Jahr entstanden ist;
leider musste ich meine Demo wegen technischer Probleme vom Netz nehmen;
muss in nächster Zeit meinen PC nachrüsten;
allerdings bin ich eigentlich Banker und mache das mehr als Hobby deshalb geht
es nur sehr langsam voran; auf meine ursprüngliche Demo hatten sich bereits einige
Interessenten gemeldet, die ich aber noch vertrösten musste.

mfg
Erich
http://www.toolex.de
 Bild

Beiträge aus den Excel-Beispielen zum Thema "ListBox aktivieren"