W pętle. Pierwszy parametr metody Find, skąd zacząć wyszukiwanie. Zwracana pozycja znaleziona. Kolejne wyszukiwanie trzeba zacząć od ostatniej znalezionej plus jeden.
gdzie start to początek wyszukiwania. Deklarujesz zmienną start w general:
dim start as integer
dim tekst1, tekst2 as string
i nadajesz jej początkową wartość start = 1.
Private Sub Form_Load()
start = 1
end sub
Tekst1 to zmienna typu string i niech np. tekst1=text1.text (tekst przeszukiwany) tekst2 to zmienna która której szukamy. Umieszczamy na formie okieknko tekstowe o nazwie text2 oraz przycisk command1 i nadajemy mu nazwę np. szukaj i piszemy procedurę:
Private Sub szukaj_Click()
dim i,j as integer
tekst1=text1.text: tekst2=text2.text
If InStr(start,tekst1, tekst2) Then
j = InStr(start,tekst1, tekst2): text1.SelStart = j - 1: text1.SelLength = Len(tekst2): text1.SetFocus
start=j+len(tekst2)
Exit Sub
else
if start=1 then msgbox "Nie znaleziono." else msgbox "Nie znaleziono więcej."
start=1
end if
end sub
Po każdym naciśnięciu klawisza szukaj zostanie wskazane nastepne wyszukanie.
Tak niejasno tłumaczysz o co ci chodzi, że nic dziwnego, że nie można Ci pomóc.
W języku VB nie ma takiej metody jak : “FIND” chyba, że się taką procedurę lub funkcję samemu napisze albo gdzieś ściągnie. Być może chodzi Ci nie o taką procedurę w Twoim programie ale o taką procedurę występującą w programie VB ale to całkiem inna bajka. W takim wypadku należało by użyć zamiast ‘Find’ procedury Replace’ i ‘Replace All’
Czyli klinąć Edit–>Replace—>Replace All i zamieniasz wszystko co chcesz na nowe wpisy.
Rzeczywiście Można by jedynie dodać, że dotyczy VB.NET, C++, C# czy JScript, a to oznacza, że trzeba by chyba precyzyjnie podawać w jakim języku się pisze.
A samo rozwiązanie problemu to rzeczywiście jak napisałeś wcześniej zastosować pętlę i tyle.
Tu masz jeszcze jeden przykład gdzie okienko tekstowe ma nazwę:RichTextBox1
i klawisz command1 umieszczony na formie zawiera procedurę:
Oczywiście procedurę możesz umieszczać też gdzie indziej np form_load.
Private Sub Command1_Click()
Dim pom, pom1 As String
Dim i As Integer
pom = "Pan kotek był chory i leżał w łóżeczku i przyszedł kot doktór. Jak się masz koteczku."
RichTextBox1.text = pom
pom1 = "kot"
Do While RichTextBox1.Find(pom1, i) <> true
i = RichTextBox1.Find(pom1, i)
RichTextBox1.SelStart = i
RichTextBox1.SelLength = Len(pom1)
RichTextBox1.SelFontName = "Arial"
RichTextBox1.SelFontSize = 15
RichTextBox1.SelBold = true
RichTextBox1.SelItalic = true
RichTextBox1.SelUnderline =true
RichTextBox1.SelColor = &HFAAAAA
i = i + Len(pom2) + 1
Loop
End Sub
Przyznaję, że nie znałem tego okienka tekstowego czyli też przy okazji coś skorzystałem bo mi się podoba.
Tak przy okazji to chciałem dodać, że w VB nie musi się koniecznie korzystać z metody fIND. Ten sam efekt uzyskamy korzystając ze standardowej funkcji wyszukiwania: i= InStr(i, pom, pom1) Różnica między tymi dwiema funkcjami jest taka, że w Find() pierwszemu znakowi tekstu jest przyporządkowana liczba 0, a w instr() liczba 1.
Procedura by wówczas wyglądała.
Dim pom, pom1 As String
Dim i As Integer
pom = "Pan kotek był chory i leżał w łóżeczku i przyszedł kot doktór. Jak się masz koteczku."
RichTextBox1.Text = pom
pom1 = "kot"
i = 1
Do While InStr(i, pom, pom1) >= 1
i = InStr(i, pom, pom1)
RichTextBox1.SelStart = i - 1
RichTextBox1.SelLength = Len(pom1)
RichTextBox1.SelFontName = "Arial"
RichTextBox1.SelFontSize = 15
RichTextBox1.SelBold = True
RichTextBox1.SelItalic = True
RichTextBox1.SelUnderline = True
RichTextBox1.SelColor = &HFAAAAA
i = i + Len(pom2) + 1
Loop
RichTextBox1.SelStart = 0