Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: w3lcome am August 23, 2016, 06:41:37 Vormittag

Titel: Array im InStr verarbeitbar?
Beitrag von: w3lcome am August 23, 2016, 06:41:37 Vormittag
Hallo zusammen,

ich versuche aktuell mit einem Instr verschiedene Zeichenkombinationen in einer Zelle festzustellen. Leider scheiter ich bei einem Typenkonflikt. Trotz recherchieren, bin ich bisher auf keine Lösung gekommen. Das zusammengefasste Codebeispiel:

Dim TableRow_OverviewFalseAndRight As Integer
Dim ArrayFormatError() As String ' Betroffenes Array
Dim FormatErrorWord As String
Dim FormatCorrectWord As String
Dim ErrorMarker As Boolean

TableRow_OverviewFalseAndRight = 2
'...
ErrorMarker = False

'...

TextFormatError = Cells(RawDataRowInt, 1)
   
    If InStr(1, ArrayFormatError, TextFormatError) > 0 Then
       
        Sheets("DataFormatResults").Select
       
        FormatErrorWord = Cells(TableRow_OverviewFalseAndRight, 1) 'z.B. "Ger'_chte"
        FormatCorrectWord = Cells(TableRow_OverviewFalseAndRight, 2) 'z.B. "Gerüchte"
       
        Do Until InStr(1, TextFormatError, FormatErrorWord) = 0 Or Cells(TableRow_OverviewFalseAndRight, 1) = "" 'Irgendwann sind keine Wörter mehr in der Liste enthalten
       
            TableRow_OverviewFalseAndRight = TableRow_OverviewFalseAndRight + 1
            FormatErrorWord = Cells(TableRow_OverviewFalseAndRight, 1)
       
        Loop
       
        If InStr(1, TextFormatError, FormatErrorWord) > 0 Then
           
            FormatCorrectWord = Cells(TableRow_OverviewFalseAndRight, 2)
           
            Sheets("Rawdata").Select
           
            Cells.Replace What:=FormatErrorWord, Replacement:=FormatCorrectWord, LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False
       
        End If

'...


Wenn das Array als Variant deklariert wird, besteht auch der Typenkonflikt. Ich würde mich über Tipps eurerseits freuen.

Vielen Dank!

Viele Grüße
w3lcome
Titel: Antw: Array im InStr verarbeitbar?
Beitrag von: maninweb am August 23, 2016, 08:49:47 Vormittag
Hallo,

Du kannst nicht InStr auf ein gesamtes Array anwenden. Dafür müsstest Du die Array-Elemente in einer Schleife
durchlaufen und jedes Element prüfen, in etwa so...

Code: Visual Basic
  1. For n = LBound(myArray,1) To UBound(myArray,1)
  2.   If InStr(1, myArray(n), "Test") > 0 Then
  3.   :
  4.   End If
  5. Next

Wenn es Dir nur darum geht, zu prüfen, ob ein Text irgendwo im Array (also irgendeinem Elemen) auftaucht,
könntest Du auch Join verwenden. Join macht einen großen String aus dem Array.

Code: Visual Basic
  1. InStr(1, Join(myArray, "-"), "Test")

Gruß
Titel: Antw: Array im InStr verarbeitbar?
Beitrag von: w3lcome am August 28, 2016, 22:22:11 Nachmittag
Hallo maninweb,

ich konnte es heute erst prüfen. Juhu es geht!

Vielen Dank!

Viele Grüße