Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Eine Variable (Integer) mit einem Array vergleiche

Forumthread: Eine Variable (Integer) mit einem Array vergleiche

Eine Variable (Integer) mit einem Array vergleiche
09.06.2018 22:59:41
Tim
Hallo Freunde der Nacht,
Ich komm gerade nicht weiter, bestimmt ist es wieder ein Deklarationsfehler
Ich habe eine Variable (Integer), deren Inhalt eine 6 Stellige Zahl ist. Und einen Array (Auch 6 Stellig)
Wie kann ich beide miteinander vergleichen?
Das Klappt nicht

If iVariable = Arr(0, 1) Then MsgBox "Das klappt nicht"
der Umweg über eine Zelle funktioniert.
sheets("Start").Range("AAL70").Value = iVariable
Sheets("Start").Range("AAL71").Value = Arr(0, 1)
If Sheets("Start").Range("AAL70").Value = Sheets("Start").Range("AAL71").Value Then MsgBox "Das Klappt"
Hat zufällig jemand eine Idee?
Viele lieben Grüße Tim
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eine Variable (Integer) mit einem Array vergleiche
09.06.2018 23:12:40
Mullit
Hallo,
von welchem Datentyp ist denn Dein Array...?...Zeig mal Deinen ganzen Code und ggf. auch wie die Daten in Dein Array gelangen...
Wenn Du etwas mehr zu Arrays lesen willst, kannst ja mal hier gucken:
http://www.online-excel.de/excel/singsel_vba.php?f=152
Gruß, Mullit
Anzeige
AW: Eine Variable (Integer) mit einem Array vergleiche
09.06.2018 23:46:30
Tim
Danke für den Link,
also ich habe jetzt meine Variable und den Array auf "Long" gesetzt.
Ich habe mal ein probiert die Variable vorher zu setzen.
so wie ich es gemacht habe ist zwar unlogisch, müsste aber eigentlich funktionieren. Tut es aber nicht.
Global Test, iVariable as Long
Global Arr(2000, 2000), z, y, a, k, founda, foundk, aa, kk As Long
Test = "702774"
iVariable = Test
If iVariable = Arr(0, 1) Then MsgBox "Das klappt nicht"
So klappt es klappt es seltsamerweise.
Global Test, iVariable as Long
Global Arr(2000, 2000), z, y, a, k, founda, foundk, aa, kk As Long
iVariable = "702774"
If iVariable = Arr(0, 1) Then MsgBox "Das klappt"
es müsste eigentlich auch gehen ohne dass ich die Variable vorher setzte, da "702774" schon der Inhalt ist. Der Umweg über die Zellen klappt ja.
Auch der Umweg über 2 Variablen funktioniert
test = Arr(0, 1)
test2 = iVariable
If test = test2 Then MsgBox "klappt auch"
grr ich werde verrückt
Anzeige
AW: Eine Variable (Integer) mit einem Array vergleiche
09.06.2018 23:50:37
Tim
Ahh ich habe es gefunden ;)
War nicht richtig deklariert, so geht es.
Global Arr(2000, 2000) As Long, z, y, a, k, founda, foundk, aa, kk As Long

Danke ;)
AW: Eine Variable (Integer) mit einem Array vergleiche
10.06.2018 00:47:29
Mullit
Hallo,
ok prima, da gibts noch ein paar mehr Baustellen, alle Variablen sind mit ihrem Typ zu deklarieren, andernfalls sind sie vom Datentyp Variant, Global ist veraltet, die aktuelle Bez. für globale Vars lautet Public und sie sollten möglichst sparsam verwendet werden.
Wenn Du Zahlen einliest, haben dort auch die Anführungsz. nix zu suchen, sonst ist der Wert zunächst ein String, und verwende ruhig sprechende Namen für Deine Variablen, nicht diese verkümmerten Einzelbuchstabenhieroglyphen, vielleicht doch nochmal ein Grundlagenlink, o.ä. von der Seite.....
http://www.online-excel.de/excel/singsel_vba.php?f=4
Gruß, Mullit
Anzeige
AW: Eine Variable (Integer) mit einem Array vergleiche
10.06.2018 15:36:22
Tim
OK vielen Dank für die Tipps.
Ist bei mir alles "learning by doing" und das meiste hier vom Board :)
So ein Grundkurs wäre mal gar nicht so schlecht...
Warum muss man sparsam mit Public/Global umgehen?
lg Tim
AW: Eine Variable (Integer) mit einem Array vergleiche
10.06.2018 18:48:45
Mullit
Hallo,
auf globale Vars hat man ja von ihrer Natur her an jeder Stelle im Projekt Lese- und Schreibzugriff, somit ist es bei größeren Projekten schwieriger einzuschätzen, wo sie welche Werte beinhalten/Effekte auslösen...
Hinzu kommt, daß sie relativ flüchtig sind und u. best. U. ihre Werte verlieren können, da ist es dann besser, man übergibt die Variablen als Parameter an die einzelnen Prozeduren...
Gruß, Mullit
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Variable (Integer) mit einem Array vergleichen in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Deklaration der Variablen und Arrays: Stelle sicher, dass Du Deine Variablen und Arrays korrekt deklarierst. Verwende den Datentyp Long für Zahlen.

    Global Arr(2000, 2000) As Long
    Global iVariable As Long
  2. Zuweisung der Werte: Weise der Variable und den Array-Elementen Werte zu. Achte darauf, dass die Werte vom gleichen Datentyp sind.

    iVariable = 702774
    Arr(0, 1) = 702774
  3. Vergleich der Werte: Vergleiche die Variable mit einem Element des Arrays.

    If iVariable = Arr(0, 1) Then MsgBox "Das klappt"
  4. Fehlerbehebung: Wenn der Vergleich nicht funktioniert, überprüfe die Deklaration und Zuweisungen erneut.


Häufige Fehler und Lösungen

  • Deklarationsfehler: Wenn Du die Variablen nicht richtig deklarierst, wird der Datentyp standardmäßig auf Variant gesetzt. Dies kann zu unerwarteten Ergebnissen führen. Stelle sicher, dass Du alle Variablen mit ihrem spezifischen Typ deklarierst.

  • Inkorrekte Zuweisung: Achte darauf, dass Du keine Anführungszeichen um Zahlen verwendest. Dies könnte die Zahl als String interpretieren, was beim Vergleich Probleme verursacht.

  • Umweg über Zellen: Wenn das direkte Vergleichen nicht funktioniert, kannst Du die Werte vorübergehend in Zellen speichern und von dort vergleichen:

    Sheets("Start").Range("AAL70").Value = iVariable
    Sheets("Start").Range("AAL71").Value = Arr(0, 1)
    If Sheets("Start").Range("AAL70").Value = Sheets("Start").Range("AAL71").Value Then MsgBox "Das klappt"

Alternative Methoden

  • Verwendung von Arrays in PHP: Wenn Du auch mit PHP arbeitest und Arrays vergleichen möchtest, kannst Du Funktionen wie in_array() oder array_search() verwenden. So kannst Du auch in PHP Arrays vergleichen.

  • Dynamische Arrays: Du kannst auch dynamische Arrays in VBA verwenden, um flexiblere Vergleiche durchzuführen. Dies könnte nützlich sein, wenn die Anzahl der Elemente nicht festgelegt ist.


Praktische Beispiele

Hier sind einige Beispiele, die Dir helfen, den Vergleich zwischen einer Variable und einem Array zu verstehen:

  1. Einfacher Vergleich:

    Dim iVariable As Long
    Dim Arr(1) As Long
    Arr(0) = 702774
    iVariable = 702774
    If iVariable = Arr(0) Then MsgBox "Die Werte stimmen überein!"
  2. Mit Schleife:

    Dim i As Integer
    For i = 0 To 1
       If iVariable = Arr(i) Then
           MsgBox "Übereinstimmung gefunden bei Index " & i
       End If
    Next i

Tipps für Profis

  • Verwende sprechende Variablennamen: Anstatt iVariable zu verwenden, benenne sie spezifischer, z.B. SuchZahl, um den Code leserlicher zu machen.

  • Vermeide globale Variablen: Verwende Public anstelle von Global, um die Sichtbarkeit zu steuern und die Wartbarkeit des Codes zu erhöhen.

  • Debugging-Techniken: Nutze Debug.Print zur Ausgabe von Werten in das Direktfenster, um schnell zu überprüfen, wo der Code möglicherweise fehlschlägt.


FAQ: Häufige Fragen

1. Warum funktioniert der Vergleich nicht? Der Vergleich funktioniert möglicherweise nicht, weil die Variablen nicht korrekt deklariert sind oder weil ein Datentypkonflikt vorliegt. Stelle sicher, dass beide Werte denselben Datentyp haben.

2. Wie deklariere ich ein Array in VBA? Ein Array in VBA kann mit der Syntax Dim Arr(n) As Datentyp deklariert werden. Verwende Long für ganze Zahlen.

3. Was ist der Unterschied zwischen Global und Public? Global ist veraltet und sollte durch Public ersetzt werden, um globale Variablen zu deklarieren. Public bietet mehr Kontrolle über die Sichtbarkeit in Deinem Projekt.

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