Wo liegt mein Bug im Coding?

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox


Excel-Version: 8.0 (Office 97)
nach unten

Betrifft: Wo liegt mein Bug im Coding?
von: Steph@n
Geschrieben am: 21.05.2002 - 12:00:55

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?

Sub Test()

Dim intZähler As Integer    
Dim bol1999 As Boolean  
Dim bol2000 As Boolean  
Dim bol2001 As Boolean  
Dim bol2002 As Boolean  
'--------------------------

    bol1999 = False
    bol2000 = False
    bol2001 = True
    bol2002 = False
   
    For intZähler = 1999 To 2002  
        If bol & intZähler = True Then  
           
           '... eigenes Coding
           
        End If  
    Next intZähler

End Sub  

Vielen Dank für Eure Hilfe!

Gruss Steph@n

nach oben   nach unten

Re: Wo liegt mein Bug im Coding?
von: ThomasW
Geschrieben am: 21.05.2002 - 12:08:46

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


nach oben   nach unten

Re: Wo liegt mein Bug im Coding?
von: ThomasW
Geschrieben am: 21.05.2002 - 12:10:33

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


nach oben   nach unten

Re: Wo liegt mein Bug im Coding?
von: Steph@n
Geschrieben am: 21.05.2002 - 13:03:19

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



nach oben   nach unten

Versuch mit Array
von: Martin Beck
Geschrieben am: 21.05.2002 - 13:18:51

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


nach oben   nach unten

Re: Versuch mit Array
von: Steph@n
Geschrieben am: 21.05.2002 - 13:54:52

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)


Public Sub AuswahlDrucken()  

Dim intZähler As Integer    
Dim arr(2002)
'--------------------------

arr(1999) = bol1999
arr(2000) = bol2000
arr(2001) = bol2001
arr(2002) = bol2002

Application.ScreenUpdating = False
   
    For intZähler = 1999 To 2002  
        If arr(intZähler) = True Then  
        ...


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

Gruss Steph@n

nach oben   nach unten

Re: Versuch mit Array
von: Martin Beck
Geschrieben am: 21.05.2002 - 17:27:06

Hallo Stephan,

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

Gruß
Martin Beck


nach oben   nach unten

Re: Versuch mit Array
von: Steph@n
Geschrieben am: 22.05.2002 - 08:11:47

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


nach oben   nach unten

Re: Versuch mit Array
von: Martin Beck
Geschrieben am: 22.05.2002 - 10:08:51

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

nach oben   nach unten

Re: Wo liegt mein Bug im Coding?
von: Hans W. Hofmann
Geschrieben am: 22.05.2002 - 11:44:15

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

nach oben   nach unten

Danke!
von: Steph@n
Geschrieben am: 23.05.2002 - 09:18:54

Hi Martin,

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

Gruss Stephan


nach oben   nach unten

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


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "ausführen anderer Applikationen"