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"