Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
268to272
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
268to272
268to272
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

2x Listbox in Userform

2x Listbox in Userform
16.06.2003 18:18:58
Axel
Hallo zusammen,

Noch einmal eine Frage zu Listboxen.
Gabor hatte mir gestern geantwortet, aber ich habe seine Idee nicht richtig umsetzen können.
Vielleicht kann mir jemand noch mal auf die Sprünge helfen.

Das Problem:
In einer Tabelle (Tabellenbereich "A5:Z100") habe ich in der Spalte "A" eine Auswahlmöglichkeit mit einem "x".
Ist dieses "x" vorhanden, wird die Zeile markiert.
In den Spalten B und D stehen die Bauteilbezeichnungen.
Ab der Spalte "E" trage ich immer aktuelle Ereignisse mit einem Datum manuell hinein.
Ich lade nun über eine Userform 2 Listboxes hoch. In der einen ersten Listbox (Listbox1) stehen nur die
mit "x" markierten Zeilen des Tabellenblattes (die Bauteilbezeichnung).
In der zweiten Listbox (Listbox2) sollen nun nach einen Klick auf den Eintrag in der "Listbox1" die Inhalte aller
Spalten ab Spalte "E" der betreffenden Zeile zu sehen sein.

Das Laden der Userform mit der Listbox1 klappt schon, aber der Rest ??? Kann mir jemand weiterhelfen ?

Mein Laden der Userform:

Private Sub UserForm_Initialize()
For Z = 1 To 200
If Sheets("Chronik").Cells(Z, 1).Value = "x" Then
Listbox1.AddItem Sheets("Chronik").Cells(Z, 3).Value & _
Sheets("Chronik").Cells(Z, 5).Value
For InhaltStö = 10 To 256
Listbox2.AddItem Sheets("Chronik").Cells(Z, InhaltStö).Value
Next InhaltStö
Listbox1.ListIndex = 0
End If
Next Z
End Sub

Gruß Axel

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: 2x Listbox in Userform
16.06.2003 18:35:00
andre

hallo axel,
derzeit füllst du beide listboxen. der teil für die zweite muss raus und in das click - oder change ereignis der ersten (kommt automatisch bei code anzeigen der 2. lbo.)
für z nimmst du listbox1.listindex
noch'n tip: tue die listbox2 zuerst leeren, bevor du sie füllst.
gruss andre

Re: 2x Listbox in Userform
16.06.2003 18:54:26
Axel

Hallo Andre,

danke, aber diese Idee hatte ich probiert, klappt aber nicht, da ich durch die mit "x" gekennzeichneten Zeilen Lücken habe.
Zum Beispiel Zeile 3,6,7,9,12 usw., dadurch stimmt der Listbox.ListIndex() leider nicht mehr.
Gabor hatte mir geschrieben, ich solle ein dynamisches Feld verwenden, aber irgendwie weiß ich nicht, wie ich es richtig einsetze. Hier sein Vorschlag:

##################################################################
Zitat:
Hi Axel,
für solche Fälle deklariere ich ein dynamisches Feld. Dieses nimmt praktisch alle deine mit x markierten Zeilen auf und speichert die dazu gehörige Zeilennummer.
Hier mal ein Beispielcode

For i=1 To AlleZeilen
If Tabelle1.Cells(i,1) = x Then
Zaehler = Zaehler+1
Redim Preserve DynFeld(1,Zaehler)
DynFeld(0,Zaehler) = Zeilennr
DynFeld(1,Zaehler) = Bauteilbez
End if
Next Zeile

Code zum Hinzufügen aller Spaltenwerte ab "E"

Listbox1_Change
For j=5 To 256 'Maximale Spaltenanzahl in Excel
If Tabelle1.Cells(DynFeld(0,Listbox1.Listindex,j)) <> "" Then
Listbox2.Additem Tabelle1.Cells(DynFeld(0,Listbox1.Listindex,j)).Text,Index
Index = Index +1
End if
Next j

Gruß Gabor
################################################################

Gruß Axel


Anzeige
Re: 2x Listbox in Userform
16.06.2003 19:18:31
andre

hallo axel,
da muss der erste teil von gabor's code in das userform_initialize.
Private Sub UserForm_Initialize()
Dim dynfeld()
For Z = 1 To 200
If Sheets("Chronik").Cells(Z, 1).Value = "x" Then
Listbox1.AddItem Sheets("Chronik").Cells(Z, 3).Value & _
Sheets("Chronik").Cells(Z, 5).Value
Zaehler = Zaehler+1
Redim Preserve DynFeld(1,Zaehler)
DynFeld(0,Zaehler) = Z
DynFeld(1,Zaehler) = Sheets("Chronik").Cells(Z, InhaltStö).Value
Listbox1.ListIndex = 0
End If
Next Z
End Sub

gruss andre



Re: 2x Listbox in Userform
16.06.2003 19:44:30
Axel

Hallo Andre,

habe das mal versucht, bekomme dann aber den Fehlerhinweis "Laufzeitfehler '1004' - Anwendungs- oder Objektdefinierter Fehler".
Ich dachte, das liegt eventuell an der Variablendeklaration des "dynfeld" und habe es unter

"Option Explicit" als
Dim dynfeld() as Integer

vereinbahrt, aber es half nichts. Welche Rolle spielt eigentlich der Eintrag unter "Listbox1_Changes()" ???

Listbox1_Changes()
For j = 5 To 256
If Sheets("Chronik").Cells(dynfeld(0, Listbox1.ListIndex, j)) <> "" Then
Listbox2.AddItem Sheets("Chronik").Cells(dynfeld(0, Listbox1.ListIndex, j)).Text, Index
Index = Index + 1
End If
Next j
End Sub

Hast Du noch eine Idee ???



Anzeige
Re: 2x Listbox in Userform
16.06.2003 20:16:48
Nepumuk

Hallo Axel,
mach deine Listbox zweispaltig (ColumnCount - Eigenschaft) der ersten Spalte gibst du die gesamtbreite der Listbox der zweiten Spalte die Breite 0 (Eintrag bei der ColumnWith - Eigenschaft z.B. 100;0 [Excel macht daraus dann 100 Pt;0 Pt] die hundert entspricht der With - Eigenschanft der der Listbox {aber nur in meinem Beispiel}). Dann ändere dein Programm wie folgt:

Wenn du auf den Eintrag in Listbox1 klickst, werden aufgrund der Zeilennummer in Listbox1 - Spalte2 die Einträge in Listbox2 angezeigt.
Gruß
Nepumuk


Re: Hoppla
16.06.2003 20:19:14
Nepumuk

Uuuuups das zweite Makro muss natürlich so lauten:

Gruß
Nepumuk

Anzeige
Re: 2x Listbox in Userform
16.06.2003 20:32:16
Axel

Hallo Nepumuk,

habe es gerade probiert, aber ich bekomme die Fehlermeldung "Laufzeitfehler '381'". Der Fehler liegt im Initialize-Code bei ...

Listbox1.List(Listbox1.ListIndex, 1) = Z

wenn ich den rauskommentiere, startet die Form.
Mache ich schon wieder einen Denkfehler ???

Gruß Axel.

Re: 2x Listbox in Userform
16.06.2003 20:40:03
Nepumuk

Hallo Axel,
langsam werd ich alt. Das muss natürlich so lauten:

ListBox1.List(ListBox1.ListCount - 1, 1) = Z

Gruß
Nepumuk

Re: 2x Listbox in Userform
16.06.2003 20:46:10
Axel

Hey Nepumuk,

Dein Alter in aller Ehre, ich hab`s nicht geschafft, Du ja. E S L Ä U F T ! ! !

Danke, Danke, Danke und einen schönen Abend noch

Grüße Axel

Anzeige
Re: 2x Listbox in Userform
18.06.2003 06:47:35
andre

hallo axel,
der code von gabor steckte ja voller fehler. ich habe das mal noch in die reihe gebracht. du musst allerdings wieder auf deine 200 gehen und die zeile inhaltstö=1 entfernen.


Dim dynfeld()
Private Sub ListBox1_Click()
ListBox2.Clear
For j = 1 To 256 'Maximale Spaltenanzahl in Excel
If Tabelle1.Cells(dynfeld(0, ListBox1.ListIndex), j) <> "" Then
ListBox2.AddItem Tabelle1.Cells(dynfeld(0, ListBox1.ListIndex), j).Text, Index
Index = Index + 1
End If
Next j
End Sub

Private Sub UserForm_Initialize()
InhaltStö = 1 'kommt im original aus anderem makro, zeile entfernen!
Zaehler = 0

For Z = 1 To 10 '200 im original
If Sheets("Chronik").Cells(Z, 1).Value = "x" Then
ListBox1.AddItem Sheets("Chronik").Cells(Z, 3).Value & _
Sheets("Chronik").Cells(Z, 5).Value

ReDim Preserve dynfeld(1, Zaehler)
dynfeld(0, Zaehler) = Z
dynfeld(1, Zaehler) = Sheets("Chronik").Cells(Z, InhaltStö).Value
Zaehler = Zaehler + 1

End If
Next Z
End Sub
 

     Code eingefügt mit Syntaxhighlighter 1.16

gruss andre

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige