Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ListBox anhand Suchbegriff (InputBox) befüllen

Forumthread: ListBox anhand Suchbegriff (InputBox) befüllen

ListBox anhand Suchbegriff (InputBox) befüllen
14.05.2006 14:15:10
reiner
Hallo Leute,
Eine umfangreiche Tabelle enthält Angaben über Kontobewegungen. Über eine InputBox will ich Textteile als Suchbegriff eingeben und diese Angaben in der Tabelle suchen lassen, anschließend soll/en der/die zugehörige/n Datensatz/-sätze in der LB aufgeführt werden.
Spalteninhalte:
Konto-Bez. SpalteA
Konto Spalte B
Datum Spalte C
Beleg-Nr. Spalte D
Buchungstext Spalte E
Betrag Spalte F
Suchbegriff = InputBox("Suchbegriff:", "Suchen")
With frmKonten
.lstKonten.ColumnCount = 5
.lstKonten.ColumnWidths = "30;58;55;156;50"
.lstKonten.Clear
.lstKonten.Width = 355
Zeile = 2
Range("A2").Select
Do Until ActiveCell.Value = ""
If InStr(ActiveCell.Value, Suchbegriff) &gt 0 Then~f~
.lstKonten.AddItem ActiveCell.Value
.lstKonten.Column(0, Zeile) = ActiveCell.Offset(0, 1).Value 'Konto--Spalte B
.lstKonten.Column(1, Zeile) = ActiveCell.Offset(0, 2).Value 'Datum--Spalte C
.lstKonten.Column(2, Zeile) = ActiveCell.Offset(0, 3).Value 'Beleg-Nr.--Spalte D
.lstKonten.Column(3, Zeile) = ActiveCell.Offset(0, 4).Text 'Buchungstext--Spalte E
.lstKonten.Column(4, Zeile) = ActiveCell.Offset(0, 5).Text 'Betrag--Spalte F
End If
Zeile = Zeile + 1
ActiveCell.Offset(1, 0).Select
Loop
End With
Bis zur Codezeile: ~f~„If InStr(ActiveCell.Value, Suchbegriff) &gt 0 Then”
läuft die Suche problemlos, bei Übereinstimmung der Begriffe: „ActiveCell.Value, Suchbegriff“ ändert „InStr“ seinen Wert von 0 auf 1.
Anstatt die ListBox zu befüllen erhalte ich immer wieder den „Laufzeitfehler 381“ angezeigt:
Eigenschaft Column konnte nicht angezeigt werden. Index des Eigenschaftsfelds ungültig
An anderer Stelle im Programmcode wird die gleiche ListBox in Abhängigkeit eines CB-Eintrags mit den Datensätzen jeweils einer Konto-Bez. (Spalte A) befüllt.
Warum lässt sich die LB nicht anhand des Suchbegriffes befüllen, wo liegt der Fehler?
mfg
reiner
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox anhand Suchbegriff (InputBox) befüllen
14.05.2006 14:52:53
reiner
hier noch ein Nachtrag,
ich glaube das Problem ist leichter anhand der Beispieltabelle nachzuvollziehen.
Eine zusätzliche Frage: Warum muss der Eintrag der InputBox exakt der Schreibweise in der Tabelle entsprechen (Groß- und Kleinschreibung), lässt es sich erreichen, das unabhängig von der Groß- und Kleinschreibung nach Begriffen gesucht wird?
https://www.herber.de/bbs/user/33630.xls
mfg
reiner
Anzeige
AW: ListBox anhand Suchbegriff (InputBox) befüllen
14.05.2006 15:40:06
Josef
Hallo Reiner!
Ohne auf deinen Programierstil näher eingehen zu wollen;-))
das geht z.B. so!
Private Sub cmdSuchen_Click()
Dim rng As Range, rngF As Range
Dim strFirst As String

cboKonten.Clear

Suchbegriff = InputBox("Suchbegriff:", "Suchen")
If Suchbegriff = "" Then Exit Sub
Gesamtbetrag = 0
With lstKonten
  .ColumnCount = 5
  .ColumnWidths = "30;58;55;156;50"
  .Clear
  .Width = 355
  Set rng = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
  Set rngF = rng.Find(Suchbegriff)
  
  If Not rngF Is Nothing Then
    strFirst = rngF.Address
    Do
      .AddItem rngF.Offset(0, 1).Value 'Konto
      .List(.ListCount - 1, 1) = rngF.Offset(0, 2).Value 'Datum
      .List(.ListCount - 1, 2) = rngF.Offset(0, 3).Value 'Beleg-Nr.
      .List(.ListCount - 1, 3) = rngF.Offset(0, 4).Text 'Buchungstext
      .List(.ListCount - 1, 4) = rngF.Offset(0, 5).Text 'Betrag
      Einzelbetrag = rngF.Offset(0, 5).Value
      Gesamtbetrag = Gesamtbetrag + Einzelbetrag
      Set rngF = rng.FindNext(rngF)
    Loop While Not rngF Is Nothing And strFirst <> rngF.Address
  End If
  lblGesamtbetrag.Caption = "Kontenumsatz: " & Format(Gesamtbetrag, "##,##0.00") & " €"
  lblAnzBuchungen.Caption = .ListCount & " Buchungen"
End With
End Sub


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: ListBox anhand Suchbegriff (InputBox) befüllen
14.05.2006 19:16:22
reiner
hallo Sepp,
danke für den Vorschlag;
könnte es sein dass Du die vorgefundene Programmierung unprofessionell empfandest?
Ich betrachte mich als Anfänger im Hinblick auf VBA-Programmierung, bin aber dennoch ein klein bisschen stolz besonders dann wenn mal etwas wie gewünscht funktioniert - was durchaus vorkommt; selbst wenn ein Profi milde lächelt und elegantere Lösungen verwendet hätte;-))
mfg
reiner
Anzeige
AW: ListBox anhand Suchbegriff (InputBox) befüllen
14.05.2006 21:02:46
reiner
hallo Sepp,
ich habe noch eine Frage zu Deinem Vorschlag:
Wenn der zu suchende Text bereits in der 2.Zeile steht wird diese Zeile dennoch erst als letzter Eintrag in der LB aufgeführt! Warum ist das so?
Set rng = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
Set rngF = rng.Find(Suchbegriff)
If Not rngF Is Nothing Then
strFirst = rngF.Address
Warum enthält die Variable strFirst die Zelladresse „A$3$“ obwohl der erste zu berücksichtigende Text in Zelladresse „A$2$“ steht?
mfg
reiner
Anzeige
AW: ListBox anhand Suchbegriff (InputBox) befüllen
14.05.2006 21:58:53
Josef
Hallo Reiner!
Das lässt sich so beheben.

Set rng = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
Set rngF = rng.Find(Suchbegriff, After:=rng.Cells(rng.Count, 1))

'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
danke
14.05.2006 22:52:28
reiner
danke Sepp
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige