Hallo,
ich habe vor ein paar Tagen angefangen mir VBA beizubringen und bin jetzt auf die erste harte Nuss gestoßen, für die ich nicht die passende Lösung finde. Ich habe mir eine relativ primitive Aufgabe ausgedacht:
In Spalte A stehen fiktive Messwerte für Bauteile, deren Solllänge 10 mm betragen soll. Wird in Zelle A1 ein Wert von 10 mm gemessen, erhalte ich ich in B1 ein "Perfekt". Ist der Wert innerhalb der Toleranz von +/- 1 mm, also zwischen 9 und 11 mm, dann ist mein Bauteil in Ordnung (i.O.), liegt der Wert außerhalb ist das Bauteil nicht in Ordnung (n.i.O.).
Wenn ich das ganze mit einer For...To-Schleife programmiere klappt das wunderbar, allerdings muss ich für eine abweichende Anzahl an Messungen immer meine Anzahl der Wiederholungen ändern. Deshalb möchte ich gerne zu einer do...while- oder do...until-Schleife übergehen. Hiermit habe ich allerdings keinen Erfolg, da VBA mir die Zeile direkt nach der Do-Anweisung als Laufzeitfehler '1004' ankreidet.
Ich hätte gerne, dass das Programm nach dem letzten Messwert endet, also sobald in der Spalte A eine leere Zelle auftritt. Habe ich irgendwie mein Abbruchkriterium nicht klar definiert? Oder muss ich dem programm sagen, wo mein 'n' anfangen soll?
Für Hilfe oder erstmal einen Denkanstoß wäre ich sehr dankbar!
Viele Grüße
Sebastian
Sub Toleranz()
'Variablen
Dim Toleranz As Integer
Dim Soll_Wert As Integer
Dim n As Integer
'Wertzuweisung
Toleranz = 1
Soll_Wert = 10
Do
If Cells(n, 1).Value = Soll_Wert Then
Cells(n, 2).Value = "Perfekt"
ElseIf Cells(n, 1).Value >= Soll_Wert - Toleranz And Cells(n, 1).Value <= Soll_Wert + Toleranz Then
Cells(n, 2).Value = "i.O."
Else
Cells(n, 2).Value = "n.i.O."
End If
Loop Until IsEmpty(Cells(n, 1)) = True
End Sub
|