Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

IsInArray

Forumthread: IsInArray

IsInArray
26.10.2015 20:48:30
Björn
Hallo,
ich habe ein Verständnisproblem und wäre über Eure Hilfe sehr dankbar.
Ich habe ein Makro geschrieben, dass Spalten auf einem bestimmten Inhalt überprüfen soll und die Anzahl des Inhalts ermittelt.
Bevor der Inhalt überprüft und gezählt wird, muss die IsInArray ein false wiedergegeben.
Leider kann ich den IsInArray-Befehl nicht in den Sub() einbinden. Habt Ihr einen Lösungsvorschlag wie dieser Befehl im Makro eingesetzt werden kann?
Sub testtest()
Dim reih  As Integer
Dim z As Integer
Dim anzahl As Long
Dim Auswahl, strSuch As Variant
Dim Arr_count  As Integer
'#############################Array###################
Dim Arr_1() As Variant
Arr_1 = Array("Start")
'#############################Array###################
With Worksheets("Tabelle1")
For reih = 3 To 8
Auswahl = Mid(.Range("G" & reih), 1, 10)
anzahl = 0
'###################### Suchmaske ###################
strSuch = Auswahl
If IsError(Application.Match(strSuch, Arr_1, 0)) Then
MsgBox strSuch & " nicht gefunden."
Else
MsgBox strSuch & " gefunden."
End If
'###################### Suche nach HTZ Ende #########
' Starten, wenn der Inhalt des eindimensionalen Arrays nicht mit Auswahl matched/ü _
bereinstimmt
If IsInArray(Auswahl, Arr_1) = False Then
'Spalten auf Inhalt Auswahl überptüfen und Summe ermitteln
For Each cw In .Range("G:G").SpecialCells(xlConstants)
If InStr(cw, Auswahl) > 0 Then
anzahl = anzahl + 1
End If
Next cw
'##################################################Erweiterung_Array#################### _
_
ReDim Preserve Arr_1(UBound(Arr_1) + 1)
Arr_1(UBound(Arr_1)) = Auswahl
For Arr_count = LBound(Arr_1) To UBound(Arr_1)
MsgBox Arr_1(Arr_count)
Next Arr_count
'####################################################################################### _
_
End If
Next reih
End With
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: IsInArray
26.10.2015 21:04:25
Gerd
Hallo Björn!
Leider kann ich den IsInArray-Befehl nicht in den Sub() einbinden.
Das ist eine benutzerdefinierte Prozedur (Makro oder Funktion, sog. UdF).
Du solltest diese also in deiner Datei oder Umgebung haben u. für weiteres uns hier zeigen.
Gruß Gerd

Anzeige
AW: IsInArray
26.10.2015 21:38:37
Mullit
Hallo,
bei Excel gut - VBA gut sollte man aber seine eigenen benutzerdef. Funktionen kennen, ich hab' sie mit 1 x Googeln gefunden...
Gruß, Mullit
;
Anzeige

Infobox / Tutorial

IsInArray in VBA: Funktionen und Lösungen


Schritt-für-Schritt-Anleitung

Um die Funktion IsInArray in deinem VBA-Makro zu verwenden, musst du zuerst die benutzerdefinierte Funktion erstellen. Hier ist eine Schritt-für-Schritt-Anleitung, wie du das machst:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11 in Excel, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeinDateiname)" und wähle Einfügen > Modul.
  3. Erstelle die IsInArray-Funktion:

    • Füge den folgenden Code in das Modul ein:
    Function IsInArray(value As Variant, arr As Variant) As Boolean
       Dim element As Variant
       IsInArray = False
       For Each element In arr
           If element = value Then
               IsInArray = True
               Exit Function
           End If
       Next element
    End Function
  4. Verwende die Funktion in deinem Makro:

    • Jetzt kannst du IsInArray in deinem bestehenden Makro verwenden, wie im Beispiel von Björn gezeigt.

Häufige Fehler und Lösungen

  • Fehler: "Sub oder Function nicht gefunden"

    • Lösung: Stelle sicher, dass die IsInArray-Funktion im gleichen Modul oder einer anderen zugänglichen Stelle definiert ist.
  • Fehler: Typenübereinstimmung

    • Lösung: Achte darauf, dass die Datentypen von value und arr übereinstimmen. Falls du mit Strings arbeitest, stelle sicher, dass du keine numerischen Werte übergibst.

Alternative Methoden

Falls du die IsInArray-Funktion nicht verwenden möchtest, gibt es auch andere Möglichkeiten, um zu überprüfen, ob ein Wert in einem Array vorhanden ist:

  1. Verwendung von Application.Match:

    • Du kannst Application.Match verwenden, um zu überprüfen, ob ein Wert in einem Array ist. Beispiel:
    If Not IsError(Application.Match(Auswahl, Arr_1, 0)) Then
       ' Wert gefunden
    End If
  2. Loop durch das Array:

    • Eine einfache Schleife kann ebenfalls verwendet werden, um den Wert zu finden. Dies ist jedoch weniger effizient als die oben genannten Methoden.

Praktische Beispiele

Hier ist ein Beispiel, das zeigt, wie du die IsInArray-Funktion in deinem Makro nutzen kannst:

Sub testtest()
    Dim reih As Integer
    Dim anzahl As Long
    Dim Auswahl As Variant
    Dim Arr_1 As Variant
    Arr_1 = Array("Start")

    With Worksheets("Tabelle1")
        For reih = 3 To 8
            Auswahl = .Range("G" & reih).Value
            If IsInArray(Auswahl, Arr_1) = False Then
                MsgBox Auswahl & " nicht gefunden."
            Else
                MsgBox Auswahl & " gefunden."
            End If
        Next reih
    End With
End Sub

Tipps für Profis

  • Optimiere die IsInArray-Funktion: Du kannst die Funktion optimieren, indem du sie so anpasst, dass sie auch nach Teilstrings sucht oder Groß-/Kleinschreibung ignoriert.
  • Verwende Dictionary-Objekte: In größeren Datenmengen kann die Verwendung von Dictionary-Objekten schneller sein, um die Suchzeiten zu minimieren.

FAQ: Häufige Fragen

1. Wie kann ich die IsInArray-Funktion in anderen Modulen verwenden? Um die Funktion in anderen Modulen zu verwenden, stelle sicher, dass sie in einem allgemeinen Modul gespeichert ist, nicht in einem Arbeitsblatt- oder Klassenmodul.

2. Ist IsInArray auch in Excel 365 verfügbar? Ja, die benutzerdefinierte Funktion IsInArray kann in allen Excel-Versionen verwendet werden, die VBA unterstützen, einschließlich Excel 365.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige