Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1348to1352
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
Inhaltsverzeichnis

Warteschleife

Warteschleife
14.02.2014 08:58:40
Jürgen
Hallo
ich versuche seit einiger Zeit folgendes Problem in einer VBA Programmierung zu lösen:
in einer Zelle, z.B. A1, kann eine Zahl eingetragen werden.
In einer 2. Zelle, z.b. A2, kann ebenfalls eine Zahl eingetragen werden.
Beide Zellen stehen aber in einer festen Beziehung, d.h. der Wert in A2 muss das 3-fache das Wertes von A1 sein.
Als Eingabewerte stehen manchmal entweder der Wert zur Verfügung der in A1 eingetragen werde soll, manchmal der Wert der in A2 eingetragen werden muss.
Für die weitere Verarbeitung wird der Wert in A2 benötigt.
Nun möchte ich verhindern, dass ein Benutzer ein Wert in die Zelle A1 einträgt und gleichzeitig einen Wert in die Zelle A2, der jedoch nicht den Anforderungen (A1 * 3) entspricht. Die Möglichkeit des korrekten, gleichzeitigen Eintrages (z.B. A1 = 1; A2 = 3) soll jedoch erhalten bleiben.
Ich habe versucht eine Warteschleife zu basteln, in der ein laufendes Makro so lange engehalten wird, eine Fehlermeldung (MsgBox) auswirft und zur Zelle A1 springt bis die widersprüchliche Eingabe in den Zellen A1 und A2 entweder durch Löschen oder Korrektur einer Eingabe beseitigt ist.
Diese ist mir bisher nicht gelungen.
Wer kann mmir helfen.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Warteschleife
14.02.2014 10:07:16
fcs
Hallo Jürgen,
ich würde es mit einem Ereignismakro lösen, das auf die Eingabe in die Zellen reagiert und die jeweils andere Zelle auf den korrekten Wert setzt.
Gruß
Franz
'Makro in dem Modul zu dem Tabellenblatt mit den beiden Eingabezellen
Private Sub Worksheet_Change(ByVal Target As Range)
Dim varFaktor
varFaktor = 3
Select Case Target.Address
Case "$A$1"
Application.EnableEvents = False
If Target = "" Then
Range("A2").ClearContents
Else
If IsNumeric(Target.Value) Then
Range("A2") = varFaktor * Target.Value
End If
End If
Application.EnableEvents = True
Case "$A$2"
Application.EnableEvents = False
If Target = "" Then
Range("A1").ClearContents
Else
If IsNumeric(Target.Value) Then
Range("A1") = Target.Value / varFaktor
End If
End If
Application.EnableEvents = True
End Select
End Sub

Anzeige
AW: Warteschleife
14.02.2014 10:07:46
Uwe
Hallo Jürgen,
das evtl. mal als Ansatz.
Sub test()
If Cells(2, 1)  Cells(1, 2) * 3 Then
MsgBox "Fehler! A1 darf nur ein drittel von A2 sein!"
If Cells(1, 1)  Cells(2, 1) / 3 Then
MsgBox "Fehler! A2 muss das dreifache von A1 sein!"
End If
End If
End Sub

Grüße Uwe

AW: Warteschleife
14.02.2014 10:41:36
Uwe
Hallo Jürgen,
oder lässt die Zahlen in Inputboxen eintragen und vor Eintrag in die entsprechenden Zellen prüfen ob die Werte sein können.
Sub test()
Dim A1
Dim A2
Dim wert As Single
Dim Vergl As Boolean
Eingabe:
Do
A1 = InputBox("Zahl für A1 eingeben:")
If StrPtr(A1) = 0 Then Exit Sub
If StrPtr(A1) = 1 Or A1 = "" Then MsgBox "Wert für A1 fehlt!"
Loop Until A1  ""
Do
A2 = InputBox("Zahl für A2 eingeben:")
If StrPtr(A2) = 0 Then Exit Sub
If StrPtr(A2) = 1 Or A1 = "" Then MsgBox "Wert für A1 fehlt!"
Loop Until A2  ""
wert = A1 * 3
If wert = A2 Then
Vergl = True
End If
If Vergl = True Then
Cells(1, 1) = A1
Cells(2, 1) = A2
Else
MsgBox "Da stimmt was nicht!"
GoTo Eingabe
End If
End Sub

Gruß Uwe

Anzeige
AW: Warteschleife
14.02.2014 22:26:28
Uwe
Hallo Jürgen,
das ganze noch mit Fehlerroutine.
Sub Test()
Dim A1, A2, Wert As Single, varWert As Boolean
Dim Faktor
Faktor = 3
Eingabe:
Do
A1 = InputBox("Wert für A1 eingeben:", , Range("A1")) 'Wert aus A1 wird in Inputbox angezeigt
If StrPtr(A1) = 0 Then Exit Sub
If StrPtr(A1) = 1 Or A1 = "" Then MsgBox "Wert für A1 fehlt!"
Loop Until A1  ""
If Not IsNumeric(A1) Then GoTo Error
Do
A2 = InputBox("Wert für A2 eingeben:", , Range("A2")) 'Wert aus A2 wird in Inputbox angezeigt
If StrPtr(A2) = 0 Then Exit Sub
If StrPtr(A2) = 1 Or A2 = "" Then MsgBox "Wert für A2 fehlt!"
Loop Until A2  ""
If Not IsNumeric(A2) Then GoTo Error
Wert = A1 * Faktor
If Wert = A2 Then varWert = True
With ThisWorkbook.Sheets("Tabelle1")
If varWert = True Then
.Range("A1") = A1
.Range("A2") = A2
Else
MsgBox "Fehler:" & Chr(10) _
& A2 & " ist nicht das Dreifache von " & A1 & "!"
GoTo Eingabe
End If
End With
Exit Sub
Error:
MsgBox "Es sind nur Zahlen erlaubt!"
GoTo Eingabe
End Sub
Grüße Uwe
Rückmeldung wäre nett
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige