ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 26.11.2001

Diese Seite wurde zuletzt aktualisiert am 26.11.2001
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Vorkommnisse

Zurück...


Anzeige

(-hg) mailto:hg_instroccur@aboutvb.de

Die Funktion InStr liefert Ihnen die Position des Vorkommens eines Strings in einem anderen String, entweder ab dem Anfang oder hinter einer anzugebenden Startposition. Wenn Sie allerdings erst das "soundsovielte" Vorkommen interessiert, müssen Sie selbst mitzählen. Die folgende Funktion InStrOccur ("Occurence", engl. für "Vorkommen") erspart Ihnen die Zählerei:

Public Function InStrOccur(Text As String, Find As String, _
 Optional ByVal Occurence As Long, _
 Optional ByVal Start As Long = 1, _
 Optional CompareMethod As VbCompareMethod = vbBinaryCompare) _
 As Long

  Dim nOccur As Long
  Dim nPos As Long
  Dim nStart As Long
  
  Select Case Occurence
    Case Is > 0
      nStart = Start
      Do
        nPos = InStr(nStart, Text, Find, CompareMethod)
        If nPos Then
          nOccur = nOccur + 1
          If nOccur = Occurence Then
            InStrOccur = nPos
            Exit Function
          End If
          nStart = nPos + 1
        Else
          Exit Do
        End If
      Loop
    Case Else
      Err.Raise 5
  End Select
End Function

Natürlich gibt es auch den Rückwärtsgang, der den gegebenen String von hinten her durchsucht. In Visual Basic 6 können Sie dazu auf die recht schnelle InStrRev-Funktion zurückgreifen:

Public Function InStrRevOccur(Text As String, Find As String, _
 Optional ByVal Occurence As Long, _
 Optional ByVal Start As Variant, _
 Optional CompareMethod As VbCompareMethod = vbBinaryCompare) _
 As Long

  Dim nOccur As Long
  Dim nPos As Long
  Dim nStart As Long
  
  Select Case Occurence
    Case Is > 0
      If IsMissing(Start) Then
        nStart = Len(Text)
      Else
        nStart = Start
      End If
      Do
        nPos = InStrRev(Text, Find, nStart, CompareMethod)
        If nPos Then
          nOccur = nOccur + 1
          If nOccur = Occurence Then
            InStrRevOccur = nPos
            Exit Function
          End If
          nStart = nPos - 1
        Else
          Exit Do
        End If
      Loop
    Case Else
      Err.Raise 5
  End Select
End Function

In Visual Basic 5 brauchen Sie hingegen einen eigenen Algorithmus, der zuerst alle Vorkommen ermitteln muss, um dann das "soundsovielte" Vorkommen von der Gesamtzahl aus gesehen herauszufischen:

Public Function InStrRevOccur5(Text As String, Find As String, _
 Optional ByVal Occurence As Long, _
 Optional ByVal Start As Variant, _
 Optional CompareMethod As VbCompareMethod = vbBinaryCompare) _
 As Long

  Dim nOccurences() As Long
  Dim nPos As Long
  Dim nStart As Long
  Dim nOccurence As Long
  Dim nOccur As Long
  Dim nText As String
  
  Select Case Occurence
    Case Is > 0
      ReDim nOccurences(1 To 10)
      nStart = 1
      If IsMissing(Start) Then
        nText = Text
      Else
        nText = Left$(Text, nStart)
      End If
      Do
        nPos = InStr(nStart, nText, Find, CompareMethod)
        If nPos Then
          nOccur = nOccur + 1
          If nOccur > UBound(nOccurences) Then
            ReDim Preserve nOccurences(1 To UBound(nOccurences) + 10)
          End If
          nOccurences(nOccur) = nPos
          nStart = nPos + 1
        Else
          Exit Do
        End If
      Loop
      nOccurence = nOccur - Occurence + 1
      If nOccurence >= 1 Then
        InStrRevOccur5 = nOccurences(nOccurence)
      End If
    Case Else
      Err.Raise 5
  End Select
End Function

Modul modInStrOccur (modInStrOccur.bas - ca. 3,3 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer