Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1112to1116
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
Inhaltsverzeichnis

Probleme mit der UserForm Suchmaske

Probleme mit der UserForm Suchmaske
Fredy
Hallo
Wo bitte ist in dem Code eine Zellen Begrenzung wen ich das userform aufrufe kommt meine suchmaske wen ich dort eine Sorte Nummer ein gib zeigt es mir alle Einträge unter der Sorten Bezeichnung an nur zeig es mir nur 9 von insgesamt 26 Zellen an
End Sub
Private Sub cmdSearch_Click()
Dim rng As Range
Dim sFirst As String
Dim sFind As String
Dim sMod As XlLookAt
Dim n As Integer, aa As Integer
If txtSearch = "" Then Exit Sub
ListBox1.Clear
'Listbox leeren
'Überschriftenzeile
ListBox1.AddItem Sheets("Checkliste Engabe").Cells(2, 1)
For n = 1 To 8
ListBox1.List(aa, n) = Sheets("Checkliste Engabe").Cells(2, n + 1)
Next
aa = aa + 1
sFind = txtSearch
'Suchmodus
If chkMod Then
sMod = xlWhole
Else
sMod = xlPart
End If
'Suchen
Set rng = Sheets("Checkliste Engabe").Cells.Find(What:=sFind, LookIn:=xlValues, LookAt:=sMod)
If Not rng Is Nothing Then
sFirst = rng.Address
Do
ListBox1.AddItem Sheets("Checkliste Engabe").Cells(rng.Row, 1)
For n = 1 To 8
ListBox1.List(aa, n) = Sheets("Checkliste Engabe").Cells(rng.Row, n + 1)
Next
aa = aa + 1
'weitersuchen bis zur ltzten Fundstelle
Set rng = Sheets("Checkliste Engabe").Cells.FindNext(rng)
Loop While rng.Address  sFirst
End If
End Sub
Private Sub ListBox1_AfterUpdate()
'Auswählen der Überschriftzeile verhindern
If ListBox1.Selected(0) = True Then ListBox1.Selected(0) = False
End Sub
Private Sub txtSearch_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Suche mit ENTER in der Textbox starten
If KeyCode = 13 Then cmdSearch_Click
End Sub
http://users.quick-line.ch/excel/Vorlage1.xlsm

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
hier: For n = 1 To 8 o.w.T.
01.11.2009 13:17:09
Roland
AW: hier: For n = 1 To 8 o.w.T.
01.11.2009 13:38:48
Fredy
Na sorry geht nicht wen ich den Wert höher als 8 nehme kommt eine Fehlmeldung
mehr geht auch nicht.
01.11.2009 15:56:25
Daniel
Hi
ja, ist auch so und das kannst du nicht ändern, wenn du dein Konzept nicht vollständig ummstellst.
eine Listbox kann maximal aus 10 Spalten bestehen, wenn sie, wie in deinem Fall über die AddItem-Methode befüllt wird. So wird es zumindest in der Hilfe unter dem Stichwort "ColumnCount" erklärt.
Wenn du mehr Spalten in der Listbox darstellen willst, dann geht das nur wenn du die Listbox über einen Zellbezug in der RowSource-Eigenschaft definierst.
Dies würde für dein Makro bedeuten, daß du die gefundenen Zeilen in ein neues Tabellenblatt kopieren musst und dann die Listbox mit diesem Zellbereich verknüpfst.
Eine andere alternative wären 3 Listboxen nebeneinander, die du jeweils parallel steuerst.
Gruß, Daniel
Anzeige
AW: mehr geht auch nicht.
01.11.2009 15:59:57
Roland
"Wenn du mehr Spalten in der Listbox darstellen willst, dann geht das nur wenn du die Listbox über einen Zellbezug in der RowSource-Eigenschaft definierst"
oder mit einem Array füllst
AW: mehr geht mit der List-Eigenschaft
01.11.2009 16:05:35
Gerd
,statt 3 Tannen.
Wenn mal nicht gemeint ist, dass der Suchbegriff nach unten nicht genügend findet, weil die Tabelle verändert worden ist.
Gruß Gerd
AW: mehr geht mit der List-Eigenschaft
01.11.2009 16:14:20
Daniel
Nö, wenn man sich die Beispieldatei anschaut, ist ziemlich klar, daß es um die Spaltenanzahl geht und nicht um die Zeilen.
auch im Code sollte auffallen, daß der Schleifenzähler N für die Spalte verwendet wird.
gruß, Daniel
AW: mehr geht mit der List-Eigenschaft
01.11.2009 17:20:52
Fredy
Sryy wie get das mit dem Zellbezug
Anzeige
AW: mehr geht mit der List-Eigenschaft
01.11.2009 19:00:08
Daniel
HI
du musst folgende Schritte machen:
1. die gefundenen Zeilen in ein leeres Tabellenblatt kopieren (z.B. "Tabelle1")
2. der Listbox diese Zellen als Datenquelle zuweisen, das geht über 2 verschiedene Methoden:
a) ListBox1.RowSource = "'Tabelle1'!" & Sheets("Tabelle1").Cells(1, 1).CurrentRegion.Address
b) ListBox1.List = Sheets("Tabelle1").Cells(1, 1).CurrentRegion.Value2
allerdings sind beide Methoden nicht miteinander kombinierbar, also entweder oder.
wenn du dich für a) entscheidest, sind nachträgliche Veränderungen in der listbox nicht mehr möglich, sondern nur über die Veränderung der Zellwerte in der Tabelle.
allerdings hat a) den Vorteil, daß du die erste Zeile als Überschrift festlegen kannst, was für deine Anwendung sicherlich sinnvoll ist. (Eigenschaft "ColumnHeads" = True)
diese Überschrift darf allerdings nicht Teil des Zellbezugs sein, der der RowSource zugewiesen wird, die Überschrift ist automatisch immer die Zeile direk über der ersten Zeile des Zellbezugs.
Gruß, Daniel
Anzeige
AW: mehr geht mit der List-Eigenschaft
06.11.2009 14:48:58
Fredy
sorry das ist zu hoch komme nicht weiter

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige