Excel/VBA? Input Abfrage?
Guten Tag,
ich habe eine Frage und zwar geht es um VBA.
Ich möchte gerne über die MSG input?Funktion einen gewissen Wert abfragen. Die Werte befinden sich in Tabelle 2 Range (A1:A20).
Sollte sich der eingegebene Wert nicht in dieser Tabelle befinden, dann soll eine Fehlermeldung zurückgegeben werden.
Wird der gewünschte Wert gefunden bzw. existiert er in der Tabelle 2 Spalte A, soll in der dazugehörigen Zeile (Tabelle 2 Spalte B) das Wort "erledigt" stehen.
Danach soll der Prozess geschlossen werden. Das Wort "erledigt" soll natürlich bestehen bleiben.
Leider komme ich da nicht weiter.
Hat jemand eine Idee? Hoffe habe mich verständlich ausgedrückt. Leider habe ich auch nicht so Ahnung von VBA.
Vielen Dank schon mal.
Gruß.
2 Antworten
Public Sub sbCheckData()
Dim myInput
Dim FindData
Const myTab = "Tabelle1"
myInput = InputBox("Gib einen Wert zur Prüfung ein!", "Datenprüfung")
If myInput <> "" Then
FindData = Application.Match(myInput, Worksheets(myTab).Range("A1:A20"), 0)
If IsError(FindData) Then
Call MsgBox("Element: " & myInput & " nicht gefunden", vbCritical)
Else
Worksheets(myTab).Range("B" & FindData).Value = "Erledigt"
End If
End If
End Sub
Ein bisschen selbst nachdenken :p
Du suchst innerhalb von A3 und A50, heißt du hast 48 mögliche Felder. Ist es in A3, dann bezieht sich das auf Feld 1 in deinem Range. Da sich das Makro zuvor auf A1 bezogen hat passte A1 und 1, jetzt ist es A3 und 1.
Einfach
Worksheets(myTab).Range("B" & FindData + 2).Value = "Erledigt"
Edit Frage: ist dein Wert denn ein Unikat? Denn das hier würde es nur einmal ausführen. Ansonsten kannst du einfach eine Schleife laufen lassen, die sich nach erfolgreichem ausführen um 1 erhöht und wenn er nichts findet den Error ausspuckt und Exit Sub folgt
Super, vielen dank. Die InputBox funktioniert. Wenn ein Wert gesucht wird, der nicht vorhanden ist, gibt er die Fehlermeldung richtig wieder.
Jedoch im Falle des richtigen Wertes gibt er gar nichts wieder bzw. ändert nicht in der gewünschten Tabelle 2 in Spalte B neben dem Suchwert den Zelleninhalt zu "erledigt".
Die Eingabe setzt du mit InputBox um.
Den Prozess des Suchens kannst du mit dem Makrorekorder aufzeichnen und dir den Quellcode kopieren.
Findest du den Wert in Zeile x, kannst du mit Cells(x, 2).Value = "erledigt" das Kennzeichen in Spalte B setzen.
Findest du den Wert nicht, gibst du die Fehlermeldung mit MsgBox aus.
Variable = inputbox(.....) Im Ggs zur Msg-box ist hier eine Variable Pflicht!
//Edit: Mein Fehler. Es funktioniert soweit, jedoch wird "erledigt" an die falsche Stelle gesetzt. Die Range ist (A3:A50) (bereits geändert). Nur leider setzt er so dadurch das Wort "erledigt" immer zwei Zellen zu früh?