Herbers Excel-Forum - das Archiv

Loop ohne Do

Bild

Betrifft: Loop ohne Do
von: Elmar Steigenberger
Geschrieben am: 22.09.2003 17:58:35
Hallo Ihr lieben Helfer und Helferinnen,

Excel bringt bei mir Loop ohne Do Fehler bei folgenden Code:

If AktuelleSpalte < 22 Or Int((AktuelleSpalte - 22) / 4) <> (AktuelleSpalte - 22) / 4 Then

Antwort = MsgBox("Diese Schaltfäche funktioniert nur in den Summenspalte, nicht in den Spalten der Miet-, Nebenkosten- oder Garagenzahlungen." + RT2 + "Soll in die nächste Summenspalte rechts gewechselt werden?", vbYesNo)

If Antwort = vbNo Then
Exit Sub
Else
Do While ((AktuelleSpalte - 22) / 4) <> (AktuelleSpalte - 22) / 4
AktuelleSpalte = AktuelleSpalte + 1 ' Zähler hochzählen.
If ((AktuelleSpalte - 22) / 4) <> (AktuelleSpalte - 22) / 4 Then ' Wenn Bedingung = True,
Range(ActiveCell.Row, AktuelleSpalte).Select
Exit Do ' Innere Schleife verlassen.
Loop

End If

End If

==========
Wenn der User in die Spalten 22,26,30,34, ... geklickt hat, dann soll die Aktion passieren.

Wenn er z.B. in 19,20,21 geklickt hat dann soll Excel das merken (tut es) und dann die Var. AktuelleSpalte solange hochzählen bis 22 erreicht ist.

Dies müßte doch mit der Do While Loop Anweisung gehen, die habe ich aus der Hilfe kopiert und meine Dinger nur noch eingebaut.

Woher kommt der Fehler?

Vielen Dank fürs Lesen, Eindenken und Antworten!

liebe e-Grüße
Elmar

Bild

Betrifft: AW: Loop ohne Do
von: ChrisL
Geschrieben am: 22.09.2003 18:01:31
Hi Elmar

Wenn ich dich richtig verstehe, willst du feststellen, ob eine Zahl in der '4er-Reihe' ist. Versuchs mal mit dem Befehl 'Mod' der liefert dir automatisch True oder False.

Gruss
Chris
Bild

Betrifft: AW: Loop ohne Do
von: xXx
Geschrieben am: 22.09.2003 18:02:51
Hallo,
die Meldung ist irreführend. Für meine Begriffe muss das erste End If hinter das Exit Do.

Gruß aus'm Pott
Udo
Bild

Betrifft: Ja und Nein, ein End If hat gefehlt! oT
von: Elmar Steigenberger
Geschrieben am: 22.09.2003 18:11:38
Bild

Betrifft: AW: Loop ohne Do
von: Nepumuk
Geschrieben am: 22.09.2003 18:04:04
Hallo Elmar,
du hast Loop vor dem End If innerhalb der Schleife stehen.
So sollte es laufen:


Option Explicit
Public Sub test()
If AktuelleSpalte < 22 Or Int((AktuelleSpalte - 22) / 4) <> (AktuelleSpalte - 22) / 4 Then
Antwort = MsgBox("Diese Schaltfäche funktioniert nur in den Summenspalte, nicht in den Spalten der Miet-, Nebenkosten- oder Garagenzahlungen." + RT2 + "Soll in die nächste Summenspalte rechts gewechselt werden?", vbYesNo)
If Antwort = vbNo Then
Exit Sub
Else
Do While ((AktuelleSpalte - 22) / 4) <> (AktuelleSpalte - 22) / 4
AktuelleSpalte = AktuelleSpalte + 1 ' Zähler hochzählen.
If ((AktuelleSpalte - 22) / 4) <> (AktuelleSpalte - 22) / 4 Then ' Wenn Bedingung = True,
Range(ActiveCell.Row, AktuelleSpalte).Select
Exit Do ' Innere Schleife verlassen.
End If
Loop
End If
End Sub



Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk
Bild

Betrifft: AW: Loop ohne Do
von: Elmar Steigenberger
Geschrieben am: 22.09.2003 18:17:57
Hallo Nepumuk,

Danke für die Antwort,

so funzt es....

Jetzt habe ich nur noch das Problem, dass ich als aktuelle Zelle Activecell.row 13 habe und die dann zu wählende aktuelle Spalte dann z.B. 26 hat.

Wie kann ich die jetzt mit Range(AktuelleSpalte, Activecell.row).Select anwählen? Das klappt nicht, vermutlich, weil Excel auf den Spaltenbuchstaben wartet, ich den aber nicht angeben kann, da ja aktuelle Spalte eine Zahl ist und kein Buchstabe.

Wahrscheinlich ziemlich dumme Frage, ich wei´ß es aber einfach nicht.

Veilen Dank fürs Lesen und Antworten

liebe e-Grüße
Elmar
Bild

Betrifft: AW: Loop ohne Do
von: Nepumuk
Geschrieben am: 22.09.2003 19:03:47
Hallo Elmar,
einfach:

Cells(Zeilennummer,Spaltennummer).Select

Gruß
Nepumuk
Bild

Betrifft: Danke! Das ich da n. selbst draufgek. bin! oT
von: Elmar Steigenberger
Geschrieben am: 22.09.2003 20:34:44
 Bild