21. maj 2003 - 16:43Der er
7 kommentarer og 1 løsning
Gennemgå et dokument
Leder efter noget kode der kan checke det aktive dokument efter for forekomster af et bestemt ord/bogstav. Hvordan?
Her er hvad jeg har indtil videre, men det virker ikke rigtigt.
Sub FindAntalForekomster() Dim Antal As Long, Søgestreng As String Søgestreng = InputBox("Hvilket bogstav/ord vil du søge efter?") Antal = CountOccurrences(Application.ActiveDocument, Søgestreng) MsgBox "Bogstavet/ordet '" & Søgestreng & "' forekommer " & Antal & " gange i teksten" End Sub Function CountOccurrences(strText As Document, strFind As String, Optional lngCompare As VbCompareMethod) As Long Dim lngPos As Long Dim lngTemp As Long Dim lngCount As Long lngPos = 1 Do lngPos = InStr(lngPos, strText, strFind, lngCompare) lngTemp = lngPos If lngPos > 0 Then lngCount = lngCount + 1 lngPos = lngPos + Len(strFind) End If Loop Until lngPos = 0 CountOccurrences = lngCount End Function
Det er fordi standard property på et document er dets navn, så du finder faktisk antal gange teksten optræder i dokument navnet.
Function CountOccurrences(strText As Document, strFind As String, Optional lngCompare As VbCompareMethod) As Long Dim lngPos As Long Dim lngTemp As Long Dim lngCount As Long Dim strText As String TheDocument.Select strText = Selection.Text lngPos = 1 Do lngPos = InStr(lngPos, strText, strFind, lngCompare) lngTemp = lngPos If lngPos > 0 Then lngCount = lngCount + 1 lngPos = lngPos + Len(strFind) End If Loop Until lngPos = 0 CountOccurrences = lngCount End Function
Eller lidt kortere:
Function CountOccurrences(TheDocument As Document, strFind As String, Optional lngCompare As VbCompareMethod) As Long Dim strText As String, strNewText As String TheDocument.Select strText = Selection.Text If strFind <> "" Then strNewText = Replace(strText, strFind, "", 1, -1, lngCompare) CountOccurrences = (Len(strText) - Len(strNewText)) / Len(strFind) Else CountOccurrences = 0 End If End Function
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.