Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Frame
BildScreenshot zu Frame Frame-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Listbox Daten einlesen | Herbers Excel-Forum


Betrifft: Listbox Daten einlesen von: walli
Geschrieben am: 11.11.2009 16:36:21

Guten Tage zusammen,
habe folgendes Problem:
Ich möchte gern auf einer UF in einer Listbox1 +2 Daten einlesen.
In der Tabelle "Test" befinden sich jede Menge Texte und immer daneben in der Spalte eine Zahl.
Vor dem Text steht immer eine Kennung z.b. "c" 1 bis 3 Buchstaben, z.b. "cfw" dann sollten die
Werte neben dem cfw + daneben die Ziffer in der Listbix1 + 2 angezeigt werden. bis kein cfw vorhanden ist.
In einer Textbox über die Listbox 1 habe ich die Textbox für die Eingabe der Buchstaben.
Beispiel:
Irgendwo in der Tabelle,
cfw wwww 707.125
cfw fff 852.123
cfw ggg 111.452
cfw hhh 123.789

jetzt sollte in der Listbox1: www und in der nächsten Listbox2: 707.125 angezeigt werden.

mfg Walli
PS.:
Bereich komplett ist von A4 derzeit bis Spalte F200

  

Betrifft: Listbox Daten einlesen - Verständnisfrage von: fcs
Geschrieben am: 11.11.2009 17:02:21

Hallo Walli,

irgendwie blick ich aus deiner Beschreibung nicht durch, wie die Daten im Bereich A4:F200 stehen.

Gruß
Franz

so - schön in 3 Spalten ?				
Spalte A	Spalte B	Spalte C		
cfw	wwww	707.125		
cfw	fff	852.123		
cfw	ggg	111.452		
cfw	hhh	123.789		

oder so - schön in 2 Spalten?				
Spalte A	Spalte B			
cfw wwww	707.125			
cfw fff	852.123			
cfw ggg	111.452				
cf hhh	123.789				
k hhh	123.789				
					
oder so - über die Spalten verteilt ?					
Spalte A	Spalte B	Spalte C	Spalte D	Spalte E	Spalte F
cfw wwww	707.125				
cfw fff	852.123				
cfw ggg	111.452		cfw ggg	111.452	
cfw hhh	123.789		cfw hhh	123.789	
		cfw ggg	111.452		
		cfw hhh	123.789		
				cfw ggg	111.452
				cfw hhh	123.789



  

Betrifft: Muster ist unterwegs... von: walli
Geschrieben am: 11.11.2009 17:05:15

Hallo Franz,
habe ich mir gedacht, deswegen mal ein Muster erstellt.

mfg walli


  

Betrifft: AW: Muster ist unterwegs... von: fcs
Geschrieben am: 12.11.2009 00:33:15

Hallo Walli,

ich hab dir in dein Userform mal eine entsprechende Prozdur eingefügt.
Da wesentlich schöner zu handhaben wird das Kürzel per Combobox eingegeben/ausgewählt.

Die Auswahlliste der Combobox ist im Blatt "Auswahllisten" angelegt. Dort müssen dann auch alle Kürzel auftauchen, die du in den Spalten A und D im Blatt Baumuster verwendest. Außerdem kann man so schön die Modellreihe im UF mit einblenden/anzeigen.

https://www.herber.de/bbs/user/65790.xls

Gruß
Franz


  

Betrifft: Super Danker noch eine Frage von: walli
Geschrieben am: 12.11.2009 08:36:10

Guten Morgen Franz,
das ist einfach Spitze, Danke.

Frage:
Kann man auch das Baumuster in die rechte TB
eingeben u. danach wird der Typ angezeigt ?
Geht das ?

mfg Walli


  

Betrifft: AW: Super Danker noch eine Frage von: fcs
Geschrieben am: 12.11.2009 12:20:11

Hallo walli,

auch das ginge. Dann muss man in den Spalten B und E nach den Baumuster suchen und den Wert der Combobox auf den Inhalt der Zelle links von der Fundstelle setzen.

Leider erschwert der von dir um die Textboy angelegte Rahmen die Programmierung. Man muss das Exit-Frame-Ereignis auswerten, statt Exit-Textbox-Ereignis. Du solltest also ggf. auf den Zierrat mit dem Rahmen um die einzelnen Steuerelemente verzichten.

Gruß
Franz

Eine entsprechende Prozedur schaut wie folgt aus, wobei du die Nummer des Frames ggf. anpassen muss.

Private Sub Frame3_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'mit Rahmen um Box
'Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)'ohne Rahmen um Box
  Dim Spalte As Long, Zeile As Long, Zelle As Range
      With wksBaumuster
        Spalte = 2 'Spalte B vergleichen mit Textboxeintrag
        For Zeile = 4 To .Cells.SpecialCells(xlCellTypeLastCell).Row
          Set Zelle = .Cells(Zeile, Spalte)
          If LCase(Trim(Zelle.Text)) = LCase(Trim(Me.TextBox2.Text)) Then
            Me.ComboBox_Typ = Zelle.Offset(0, -1).Text
            Exit Sub
          End If
        Next
        Spalte = 5 'Spalte E vergleichen mit Comboboxauswahl
        For Zeile = 4 To .Cells.SpecialCells(xlCellTypeLastCell).Row
          Set Zelle = .Cells(Zeile, Spalte)
          If LCase(Trim(Zelle.Text)) = LCase(Trim(Me.TextBox2.Text)) Then
            Me.ComboBox_Typ = Zelle.Offset(0, -1).Text
            Exit Sub
          End If
        Next
      End With
End Sub



  

Betrifft: Leider keine Reaktion von: walli
Geschrieben am: 12.11.2009 14:24:17

Hallo Franz,
habe die Textbox allein gesetzt, leider keine Reaktion.
Habe natürlich die obere Zeile deaktiviert.

mfg Walter


  

Betrifft: AW: Leider keine Reaktion von: fcs
Geschrieben am: 12.11.2009 17:13:31

Hallo walli,

die Reaktion kommt erst dann wenn du per Tab die Textbox verläßt oder mit der Maus ein anderes Element wählst.

Gruß
Franz


  

Betrifft: AW: Leider keine Reaktion von: walli
Geschrieben am: 13.11.2009 14:42:48

Hallo Franz,
tut mir leid keine Reaktion.
Wenn ich das Baumuster in die Textbox2 eingebe u. ich verlasse die Textbox2
mit TAB oder auch ENTER, es tut sich nicht.

mfg Walli


  

Betrifft: Noch eine Frage, wenn nichts drin steht von: walli
Geschrieben am: 12.11.2009 09:23:17

Hallo Franz,
wenn ich die Buchstaben in der Combobox lösche, kommt
Fehlermeldung.
Kann man auch löschen über Button ?

mfg walli


  

Betrifft: AW: Noch eine Frage, wenn nichts drin steht von: fcs
Geschrieben am: 12.11.2009 11:22:08

Hallo walli,

mit folgender Anpassung kommt keine Fehler-Meldung mehr.

Private Sub ComboBox_Typ_Change()
  Dim Spalte As Long, Zeile As Long, Zelle As Range
  With Me.ComboBox_Typ
    If .ListIndex = -1 Then
      Me.Label_Type.Caption = "Type"                    '##### ändern!!
      Me.ListBox1.Clear
    Else

mit folgender Anpassung wird auch die Typenliste zurückgesetzt.
'- vk namen löschen --------------
Private Sub CommandButton3_Click()
  Me.TextBox2 = ""
  Me.ComboBox_Typ.ListIndex = -1       '##### einfügen!
 
 Dim z As Long
         Range("J2").Select
     z = Range("J2").End(xlDown).Row
         ActiveSheet.Range(Cells(2, 10), Cells(z, 14)).Select
        'Range("A2:BM500").Select
     Selection.Sort Key1:=Range("J2"), Order1:=xlAscending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
  Range("J2").Select
  

End Sub

Gruß
Franz


  

Betrifft: Das klappt Danke von: walli
Geschrieben am: 12.11.2009 14:30:26

Hallo Franz,
das ist i.o.

mfg walli


  

Betrifft: Wenn ich von: walli
Geschrieben am: 13.11.2009 14:46:28

Hallo Franz,
wenn ich die Combox lösche und will wieder raus kommt Fehlermeldung:
"Ungültiger Eigenschaftswert"

mfg walli


  

Betrifft: AW: Wenn ich von: fcs
Geschrieben am: 15.11.2009 12:44:12

Hallo Walli,

die Eigenschaft "MatchRequired" der Combobox steht auf "True".

Wenn du die Combobox ohne Auswahl lassen möchtest dann im UF-Editor die Eigenschaft "MatchRequired" der Combobox steht auf "False" setzen.

Dann kannst du auch unzulässige Einträge (und Leerlassen ist einer davon) machen.

Alternativ kannst du auch einfach auf "Typenliste löschen" klicken, wenn du eine bestehende Auswahl abbrechen willst.

Gruß
Franz


  

Betrifft: Danke i.o. aber Textbox2 Eingabe... von: walli
Geschrieben am: 16.11.2009 15:32:15

Hallo Franz,
habe mal rumgestöbert u. das gefunden.
Wenn ich jetzt in der Textbox2 ein Baumuster eingebe, werden alle
Baumuster aufgelistet, die entsprechend mit der Ziffer anfangen.
Wenn ich jetzt z.b. 2 eingebe kommen alle mit Baumuster 204...
das ist soweit GUT aber ich brauch davor noch den Typ also Spalte "B"
krieg das nicht hin.
Ich hoffe Du kannst helfen,

herzlichst walli.

Dim arr() As Variant
Dim index As Long, iCount As Long
Dim B As Long

B = IIf(IsEmpty(Range("B65536")), Range("B65536").End(xlUp).Row, 65536)
X = IIf(IsEmpty(Range("C65536")), Range("C65536").End(xlUp).Row, 65536)

If TextBox2.Value = "" Then
ListBox1.RowSource = "B4:B" & X
Exit Sub
End If
ListBox1.RowSource = ""
ListBox1.Clear '!!! hiermit geleert
For index = 4 To X
If LCase(Left(Cells(index, 3), Len(TextBox2))) = LCase(TextBox2) Then
If Sheets("Baumuster").Cells(index, 3) <> "" Then
On Error Resume Next
ReDim Preserve arr(0, 0 To iCount)
arr(0, iCount) = Cells(index, 3)
iCount = iCount + 1
ListBox1.Column = arr
End If
End If
Next




  

Betrifft: AW: Danke i.o. aber Textbox2 Eingabe... von: fcs
Geschrieben am: 16.11.2009 23:26:55

Hallo Walli,

das Mischen der Verwendung von RowSource- und AddItem-Methode für das Füllen der Auswahllisten ist suboptimal. Ich hab die Prozeduren deshalb so umgestellt, dass immer die AddItem-Methode bzw. das Zuweisen der Daten zur Liste via Array für Listbox1 benutzt wird.

Da sich die Auswahlen der Daten in der Combobox_Type, Listbox1 und Textbox2 gegenseitig beeinflussen musste ich verschiedene Prozeduren anpassen, damit es rund läuft. In einigen "nur" ein paar Zeilen und die TextBox2_Change komplett mit Verwendung des von dir gewählten Lösungsweges.

Gruß
Franz
Hier der Code der angepassten Prozeduren als Textdatei
https://www.herber.de/bbs/user/65962.txt


  

Betrifft: Danke das reicht so --)) von: walli
Geschrieben am: 17.11.2009 13:11:40

Hallo Franz,
ganz herzlichen Dank für die Geduld und Unterstützung,
herzlichen Dank,
mfg Walli


  

Betrifft: Listbox Daten einlesen mit Muster von: walli
Geschrieben am: 11.11.2009 17:04:10

Hallo nochmal,
habe mal ein Muster erstellt.

https://www.herber.de/bbs/user/65782.xls

mfg walli


Beiträge aus den Excel-Beispielen zum Thema "Listbox Daten einlesen"