Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
120to124
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
120to124
120to124
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wo liegt mein Bug im Coding?

Wo liegt mein Bug im Coding?
21.05.2002 12:00:55
Steph@n
Hallo Hallo,,


Habe folgendes Problem mit untenstehendem Coding:

der Inhalt der If-Schleife wird fälschlicherweise immer durchlaufen, auch wenn der Wert (z.B.: bol1999) =
False ist! Vermute dass ich nicht "bol & intZähler" schreiben darf! Aber wie muss ichs dann machen?

Vielen Dank für Eure Hilfe!

Gruss Steph@n

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Wo liegt mein Bug im Coding?
21.05.2002 12:08:46
ThomasW
Hallo Stephan,

wenn ich das richtig verstanden habe, sollen beide Bedingungen erfüllt sein, damit die If-Schleife ausgeführt wird. Wenn das so ist, dann musst du das KaufmannsUnd durch ein "AND" ersetzen.

Viel Erfolg.

Gruß Thomas

Re: Wo liegt mein Bug im Coding?
21.05.2002 12:10:33
ThomasW
hab noch was vergessen, es kann auch sein, dass du beide Kriterien unabhängig voneinander auf "True" überprüfen musst. Und diese Beide wieder mit "AND" verbinden.

Gruß Thomas

Re: Wo liegt mein Bug im Coding?
21.05.2002 13:03:19
Steph@n
Hi Thomas,

hätte vielleicht doch ein bischen mehr zum Coding sagen sollen.

In der If-Schleife findet nur eine Überprüfung auf eine Variable statt, die sich zusammensetzt aus bol und dem Zähler der for-next-schleife! (z.B.: wenn der Zähler 2001 ist soll er prüfen ob die Variable bol2001 den Wert True hat!)

Mein Problem ist, dass er die Schleife durchläuft und nicht abbricht, auch wenn die entsprechende Variable (z.B. bol1999) = False gesetzt ist!

Ich glaube ich habe da meinen Fehler in der Zusammensetzung der Variablen!

Gruss Stephan



Anzeige
Versuch mit Array
21.05.2002 13:18:51
Martin Beck
Hallo Stephan,

ich glaube, so geht es grundsätzlich nicht. Eine Alternative zu 4 fortlaufenden Variablen wäre ein Array, z.B.

Sub Test()

Dim intZähler As Integer
Dim bol1999 As Boolean
Dim bol2000 As Boolean
Dim bol2001 As Boolean
Dim bol2002 As Boolean
Dim arr(4)
'--------------------------

arr(1) = False
arr(2) = False
arr(3) = True
arr(4) = False

For intZähler = 1 To 4

If arr(intZähler) = True Then

'... eigenes Coding
MsgBox intZähler

End If
Next intZähler

End Sub

Gruß
Martin Beck

Anzeige
Re: Versuch mit Array
21.05.2002 13:54:52
Steph@n
Hallo Martin,


habe das mit dem Array umgesetzt und mich dabei auf die Array-Felder 1999 bis 2002 bezogen!

Aber ist mein jetziger Ansatz nicht sehr Performance intensiv? (wg. der Größe des Arrays)


PS: die Variablen bol1999 bis bol 2002 werden übrigens an die Prozedur übergeben, falls Du Dich wunderst, wo die herkommen!

Gruss Steph@n

Re: Versuch mit Array
21.05.2002 17:27:06
Martin Beck
Hallo Stephan,

warum beläßt Du es nicht bei der Dimensionierung 4?

Gruß
Martin Beck

Re: Versuch mit Array
22.05.2002 08:11:47
Steph@n
Hi Martin,

der intZähler von 1999 - 2002 steht für Jahreszahler (hast Du sicher auch schon vermutet) und ich greife innerhalb der If-Then-Schleife sehr häufig auf diese Zähler zurück, seis um mich auf Bereiche oder auch Sheets zu beziehen!

Gruss Stephan

Anzeige
Re: Versuch mit Array
22.05.2002 10:08:51
Martin Beck
Hallo Stephan,

dann vielleicht so:

Dim arr(4)
'--------------------------

arr(1) = bol1999
arr(2) = bol2000
arr(3) = bol2001
arr(4) = bol2002

Application.ScreenUpdating = False

For intZähler = 1999 To 2002
If arr(intZähler-1998) = True Then


Gruß
Martin Beck

Re: Wo liegt mein Bug im Coding?
22.05.2002 11:44:15
Hans W. Hofmann
Du kannst zur Laufzeit keine Variablen erzeugen.
Der Compiler interpretiert Deine Montage als Text. Schalte mal
option explizit
ein und Du wirst sehen, dass bol als eigene Variable (Variant) geführt wird.
Setze Collections ein etwa:

Dim bool As New Collection

Sub initbool()
bool.Add False, "1999"
bool.Add False, "2000"
bool.Add True, "2001"
bool.Add False, "2002"
End Sub

Sub test()
initbool
For i = 1999 To 2002
MsgBox bool("" & i)
Next
End Sub

Gruß HW

Anzeige
Danke!
23.05.2002 09:18:54
Steph@n
Hi Martin,

jawohl, so klappts und die Performance ist auch in Ordnung! Vielen Dak für den Denkanstoß!

Gruss Stephan

Danke für den Tipp! Werds testen! o.T.
23.05.2002 09:21:02
Steph@n

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige