Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
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

Suchfunktion innerhalb einer Multiline-TextBox

Suchfunktion innerhalb einer Multiline-TextBox
23.06.2014 18:57:08
Martin
Hallo,
ich versuche gerade eine Suche innerhalb einer mehrzeilige TextBox durchzuführen, aber leider klappt es nicht wie gewünscht. Es soll (hier als Beispiel) das Wort "Zeile" gesucht und markiert werden. Auch das Weitersuchen soll möglich sein.
Vielleicht könntet ihr euch das mal ansehen und mir versuchen zu helfen. Die Datei habe ich vorbereitet: https://www.herber.de/bbs/user/91234.xls
Leider schaffe ich es nicht, dass die Treffer korrekt markiert werden:
Userbild
Hier noch mein Code dazu:
Option Explicit
Private Sub CommandButton2_Click()
Call TxtBoxSearch("Zeile")
End Sub
Sub TxtBoxSearch(strSearch As String)
Dim lngSelPos As Long
Dim lngTreffer As Long
With TextBox1
'Aktuelle Markierung
lngSelPos = .SelStart + .SelLength
If lngSelPos = 0 Then lngSelPos = 1
'Treffer finden
lngTreffer = InStr(lngSelPos, .Value, strSearch)
If lngTreffer > 0 Then
.SetFocus
.SelStart = lngTreffer - 1
.SelLength = Len(strSearch)
End If
End With
End Sub
Private Sub UserForm_Initialize()
Dim i As Integer, strTextBox As String
For i = 1 To 300
If strTextBox = Empty Then
strTextBox = "Zeile " & i
Else
strTextBox = strTextBox & vbCrLf & "Zeile " & i
End If
Next
With TextBox1
.Text = strTextBox
.SelStart = 0
End With
End Sub
Vielen Dank für eure Unterstützung!
MfG
Martin

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchfunktion innerhalb einer Multiline-TextBox
24.06.2014 07:39:28
Hajo_Zi
Hallo Martin,
Sub TxtBoxSearch(strSearch As String)
Dim lngSelPos As Long
Dim lngTreffer As Long
Dim StWert As String
With TextBox1
'Aktuelle Markierung
lngSelPos = .SelStart + .SelLength
StWert = Left(.Value, lngSelPos)
lngSelPos = lngSelPos + (Len(StWert) - Len(Application.Substitute(StWert, Chr(13), ""))) _
If lngSelPos = 0 Then lngSelPos = 1
'Treffer finden
lngTreffer = InStr(lngSelPos, .Value, strSearch)
StWert = Left(.Value, lngTreffer)
lngTreffer = lngTreffer - (Len(StWert) - Len(Application.Substitute(StWert, Chr(13), "") _
))
If lngTreffer > 0 Then
.SetFocus
.SelStart = lngTreffer - 1
.SelLength = Len(strSearch)
End If
End With
End Sub

Anzeige
AW: Suchfunktion innerhalb einer Multiline-TextBox
24.06.2014 08:59:19
Martin
Hallo Hajo,
vielen Dank für deine Hilfe. Du bist ein gutes Stück weitergekommen, aber leider klappt es noch immer nicht ganz richtig. Beim Weitersuchen wird bis Zeile 38 der Suchbergriff richtig markiert, danach sucht Excel nicht weiter. Bis Zeile 161 wird nur die aktive Zeile markiert, darüber hinaus springt die Markierung immer nach oben (wie bei einer Rückwertssuche). Kannst du bitte noch einmal über den Code drübersehen?
Vielen Dank und viele Grüße
Martin

AW: Suchfunktion innerhalb einer Multiline-TextBox
24.06.2014 09:04:49
Hajo_Zi
Hallo Martín,
ich vermute das hänget damit zusammen das Du nicht die richtige TextBox hast. Soweit mir bekannt ist die Länge der Zeichen in einer TextBox begrenzt.
Gruß Hajo

Anzeige
AW: Suchfunktion innerhalb einer Multiline-TextBox
24.06.2014 09:19:54
Martin
Hallo Hajo,
ich habe die normale Standard-TextBox aus der UserForm-Steuerelemente-Werkzeugsammlung verwendet:
Userbild
Drittes Symbol von links in der oberen Reihe
Gibt es noch eine andere TextBox, die besser geeignet wäre?
(Wenn die Suchfunktion funktioniert, will ich eine Textdatei mit Messungsdaten in die TextBox einlesen und durchsuchen. Leider bin ich schon bei der Suchfunktion "hängengeblieben").
Viele Grüße
Martin

AW: Suchfunktion innerhalb einer Multiline-TextBox
24.06.2014 09:32:57
Hajo_Zi
Hallo Martin,
ich kann es an diesem Rechner nicht testen.
RichTexBox unter weitere Steuerelemente.
Gruß Hajo

Anzeige
AW: Suchfunktion innerhalb einer Multiline-TextBox
24.06.2014 09:51:41
Martin
Hallo Hajo,
vielen Dank für den Tipp mit dem "Microsoft Rich Textbox Control, version 6.0". Mit diesem Control funktioniert sogar der von mir anfangs gepostete Code fehlerfrei (...ich musste nur "Value" durch "Text" ersetzen.)
Trotzdem wäre mir eine Lösung mit einer TextBox lieber, da ich meine Datei später weitergeben möchte und folgender Warnhinweis zu Verunsicherungen führen kann:
Userbild
Ich lasse meinen Beitrag offen, vielleicht hat noch jemand eine Idee zur Lösung meines Anliegens mit einer Standard-TextBox.
Viele Grüße
Martin

Anzeige
Problem gelöst
24.06.2014 14:38:14
Martin
Hallo Hajo,
ich habe das Problem inzwischen selbst lösen können. Du hast mich mit "Application.Substitute" auf den richtigen Weg gebracht. Hier das funktionierende Makro:
Sub TxtBoxSearch(strSearch As String)
Dim lngSelPos As Long
Dim lngTreffer As Long
With TextBox1
lngSelPos = .SelStart + .SelLength
If lngSelPos = 0 Then lngSelPos = 1
lngTreffer = InStr(lngSelPos, Application.Substitute(.Text, Chr(13), ""), strSearch)
.SetFocus
If lngTreffer > 0 Then
.SelStart = lngTreffer - 1
.SelLength = Len(strSearch)
End If
End With
End Sub
Viele Grüße
Martin
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige