Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Eingabewert einer Inputbox in einem Bereich finden

Eingabewert einer Inputbox in einem Bereich finden
03.09.2024 09:43:35
Flurin Meier
Hallo

Ich brauche dringend Hilfe bei meinem Tippspiel.


Ich habe programmiert, dass bei jeder Person, die tippt, ein eingegebener Name und eine Spalte nebenan ein Passwort gespeichert wird.

Nun möchte ich dass, bei einem anderen Button-drücken, zuerst der Name abgefragt wird und dann das Passwort und danach der Rest des Programmes ausgeführt wird. (Im Moment gebe ich "Test ok" und "Test nicht ok" aus anstatt mit dem Passwort fortzufahren"

Bei übereinstimmen vom Eingegebenen und dem Name in der Zelle funktioniert alles super.
Nun ist das Problem, dass falls der Name nicht im Bereich ist, eine Fehlermeldung (91) kommt.


Kann mir jemand weiterhelfen?

Freuntliche Grüsse
Flurin


Code:


Sub Tipps_ansehen()


Dim Anfrage_Name As String 'Eingegebener Name
Dim Anfrage_Passwort As String 'Eigegebenes passwort wird überprüft
Dim Name_gefunden As String 'Zellenwert der ausgegeben wird nach dem Suchen


Anfrage_Name = InputBox("Was ist Dein Name?" & vbCrLf & vbCrLf & "(muss mit deinem (vor dem Tippen) eingebebenen Namen übereinstimmen)", "Name")

If Worksheets("Einstellungen").Range(Cells(5, 9), Cells(25, 9)).Find(Anfrage_Name) = Anfrage_Name Then

MsgBox ("test ok")

Else

MsgBox ("test nicht ok")

End If

End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eingabewert einer Inputbox in einem Bereich finden
03.09.2024 10:09:04
daniel
Hi
wenn .Find nichts findet, gibt es ein leeres Rangeobjekt "Nothing" zurück.
das ist aber im Händling etwas problematisch.

das müsste man dann so programmieren:

dim rngGefunden as range

...
set rngGefunden = ....Find(...)
if rngGefunden is Nothing then
Msgbox "Test nicht ok"
else
msgbox "Test ok"
end if


man könnte aber auch vorab prüfen, ob der Wert überhaupt vorhanden ist damit das nachfolgende .Find auch immer ein konkretes Ergebnis liefert:
if Worksheetfunction.CountIf( Worksheets("Einstellungen").Range(Cells(5, 9), Cells(25, 9)), Anfrage) > 0 Then

msgbox "Test ok"
else
msgbox "Test nicht ok"
end if


noch zwei Anmerkungen zu deinem Code.
1. Find hat viele Parameter (bspw ob der gesamte Zellinhalt übereinstimmen muss, oder nur ein Teil, oder ob in Formeln oder in Werten gesucht werden soll)
wenn man in VBA nur den Suchbegriff angibt, so verwendet .Find für die restlichen Parameter immer die zuletzt gemachte Einstellung. Dabei kann man glück haben, aber auch pech. Daher sollte man die Relevanten Parameter neben den Suchbegriff immer mit angeben (LookAt, LookIn, ggf MatchCase)

2. ein Cells ohne Tabellenblattangabe davor referenziert auf das aktive Tabellenblatt. Das gilt auch für die beiden Cells in Range(Cells(), Cells())
wenn du nur vor Range das Tabellenblatt hinschreibst und nicht vor Cells und das Tabellenblatt, das vor Range steht, ist nicht das aktive Tabellenblatt, dann soll deine Range auf ein anders Tabellenblatt referenzieren als die beiden Cells, die die Range definieren und das funktioniert nicht
das "Worksheets("Einstellungen") muss vor den beiden Cells stehen!

einfacher ist es meist, den Zellbereich über .Resize zu referenzieren: Worksheets("Einstellungen").Cells(5, 9).Resize(21, 1).Find(...)

Gruß Daniel

Anzeige
AW: Eingabewert einer Inputbox in einem Bereich finden
03.09.2024 10:17:35
Kuwer
Hallo Flurin,

Sub Tipps_ansehen()


Dim Anfrage_Name As String 'Eingegebener Name
Dim Anfrage_Passwort As String 'Eigegebenes passwort wird überprüft
Dim Name_gefunden As String 'Zellenwert der ausgegeben wird nach dem Suchen
Dim rngF As Range

Anfrage_Name = InputBox("Was ist Dein Name?" & vbCrLf & vbCrLf & "(muss mit deinem (vor dem Tippen) eingebebenen Namen übereinstimmen)", "Name")
If Len(Anfrage_Name) Then
Set rngF = Worksheets("Einstellungen").Range(Cells(5, 9), Cells(25, 9)).Find(Anfrage_Name)
If Not rngF Is Nothing Then

MsgBox ("test ok")

Else

MsgBox ("test nicht ok")

End If
End If
End Sub

Gruß, Uwe
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige