"Loop ohne Do" Hilfe!?
Private Sub CommandButton1_Click()
Dim a, b, c, d As Integer
a = 0
Do While Tabelle1.Cells(6, 3 + r) <> ""
b = Tabelle1.Cells(6, 3 + r)
d = Tabelle1.Cells(6, 3 + r + 1)
If b = "A" Or "a" Or "Ä" Or "ä" Then
c = 1
If b = "B" Or "b" Then
c = 2
If b = "G" Or "g" Then
c = 3
If b = "D" Or "d" Then
c = 4
If b = "E" Or "e" Then
c = 5
If b = "U" Or "u" Or "Ü" Or "ü" Or "V" Or "v" Or "W" Or "w" Then
c = 6
If b = "Z" Or "z" Then
c = 7
If b = "H" Or "h" Then
c = 8
If b = "C" Or "c" And d = "H" Or "h" Then
c = 8
End If
Tabelle1.Cells(7, 3 + r) = c
r = r + 1
Loop
End Sub
--------------------------------------------------------------------------------------------------------------------------------------
Es ist nochnicht fertig aber ich wollte es testen und weiß nicht was ich falsch gemacht habe... kann mir wer helfen?
3 Antworten
wusste gar nicht, dass anscheinend Do While...Loop auch geht
ich kenne diese Paarungen: (Do?) While...Wend, Do..until und Do ...Loop
zum if ohne End if: es gibt die einzeilige Variante, die man verwenden kann, wenn die Alternative sozusagen Weiter im Text heißt.
Also zB:
if a = a then Screen updating = true:then on error goto 0: exit sub
zum Beenden
da ist mir die Korrekturzeit davongelaufen... also
if a = "" then Screen updating = true: on error goto 0: MsgBox("a nicht gefüllt!"):exit sub
Das heißt, wenn versehentlich die Variable a nicht gefüllt wurde, wird die Bildschirmaktualisierung wieder eingeschaltet, der On error goto etc Befehl zurückgesetzt, der Grund in einer Messagebox genannt und nach "ok" (erst dann) das Sub verlassen. Mehrere Befehle mit Doppelpunkt = Zeilentrenner aneinanderhängen, kein Endif erforderlich. (und kein Doppelpunkt nach then)
end if end if end if end if end if end if ...
Jedes if braucht ein eigenes end if oder du nimmst elseif statt if ab dem 2. Machst du das nicht, sucht er nur innerhalb des aktuellen if nach dem do für das loop und da steht ja keins, daher die Meldung.
Nein. Zur besseren Übersichtlichkeit solltest du jedes if weiter einrücken. In solchen Fällen ist übrigens Select Case wesentlich übersichtlicher: https://docs.microsoft.com/de-de/dotnet/visual-basic/language-reference/statements/select-case-statement
Und ich glaube or "a" geht nicht, sondern nur or b="a"
Du hast deine If-s nicht geschlossen.
Private Sub CommandButton1_Click()
Dim a, b, c, d As Integer
a = 0
Do While Tabelle1.Cells(6, 3 + r) <> ""
b = Tabelle1.Cells(6, 3 + r)
d = Tabelle1.Cells(6, 3 + r + 1)
If b = "A" Or "a" Or "Ä" Or "ä" Then c = 1
If b = "B" Or "b" Then c = 2
If b = "G" Or "g" Then c = 3
If b = "D" Or "d" Then c = 4
If b = "E" Or "e" Then c = 5
If b = "U" Or "u" Or "Ü" Or "ü" Or "V" Or "v" Or "W" Or "w" Then c = 6
If b = "Z" Or "z" Then c = 7
If b = "H" Or "h" Then c = 8
If b = "C" Or "c" And d = "H" Or "h" Then c = 8
Tabelle1.Cells(7, 3 + r) = c
r = r + 1
Loop
End Sub
Versuch es mal so.
Alternativ könntest du dir mal Select Case anschauen:
Sub marine()
Zelle = Range("A1")
Select Case Zelle
Case "a", "A", "Ä", "ä"
Zelle2 = 1
Case "b", "B"
Zelle2 = 2
Case "g", "G"
Zelle2 = 3
Case "d", "D"
Zelle2 = 4
Case "e", "E"
Zelle2 = 5
Case "u", "U", "ü", "Ü"
Zelle2 = 6
Case "z", "Z"
Zelle2 = 7
Case "h", "H"
Zelle2 = 8
End Select
Range("A1").Offset(1, 0) = Zelle2
End Sub
Danke bin noch neu drin, aber ich habe noch einen Fehler endteckt:
d=Tabelle1.Cells(6, 3 + r + 1)
Funktioniert nicht... Was nun?