online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Petra65 vom 12.10.2021, 10:45 Options

Lösung

Wert aus inputBox in der aktuellen Tabelle suchen

Hallo Guten Morgen,

ich bin mal wieder auf der Suche ... ;-)

Ich habe eine inputBox, dessen Wert ich in eine Zeile schreiben lasse. Dieser Wert befindet sich auch in der Spalte A ab Zeile 5.

Mein Ziel ist es mit diesem Wert weiterzuarbeiten, daher die Frage:
besteht die Möglichkeit diesen Wert in der Spalte A zu suchen und in die gefundene Zelle zu springen ???

Der bestehende Code (A2 wird befüllt) ist:
Option Explicit

Sub KundenDatei_erstellen() .
Dim objWorkbookOpen As Object
Dim eingabe As String
Dim erg%
On Error GoTo ERRORHANDLER
Application.DisplayAlerts = False
eingabe = InputBox("Bitte geben Sie die Kunden - Nummer ein:", "Dateneingabe:")
If IsNumeric(eingabe) Then
Range("A2").Value = eingabe
Else
erg = MsgBox("Es dürfen nur Zahlen eingegeben ... !", vbCritical, "Nur Zahlen eingeben !")
End If

Set objWorkbookOpen = Workbooks.Open(ThisWorkbook.Path & "\_Vorlagen\Vorlage.xls")
With objWorkbookOpen
.Sheets("Tabelle1").Unprotect ("159")
.Sheets("Tabelle1").Range("C3") = ThisWorkbook.Sheets("Kunden").Range("A2")

If Dir(ThisWorkbook.Path & "\Behandlungen\" & .Sheets("Tabelle1").Range("C3") & ".xls") <> "" Then
MsgBox "Datei ist bereits vorhanden ...!!", vbOKOnly + vbCritical, "ACHTUNG"
ActiveWindow.Close
Exit Sub
Else
.SaveAs ThisWorkbook.Path & "\Behandlungen\" & .Sheets("Tabelle1").Range("C3") & ".xls"
.Sheets("Tabelle1").Protect ("159")
End If
End With

ERRORHANDLER:
Application.DisplayAlerts = True
Set objWorkbookOpen = Nothing
End Sub


Nun habe ich auch noch folgendes Makro, dass alleine für sich funktioniert (die entsprechende Zeile wird ausgewählt).
Leider funktioniert es nicht, wenn ich den Code der inputBox im 1. Makro dadurch ersetzte, dann passiert gar nichts:

Sub test()
Dim eingabe As Double
Dim zeile As Integer
eingabe = InputBox("Bitte Kdnr. eingeben", "Eingabe")
If IsNumeric(eingabe) = False Then
MsgBox "Bitte Kdnr. korrekt eingeben"
End If
zeile = Application.WorksheetFunction.Match(eingabe, Range("A5:A65536"), 0)
Rows(zeile + 4).Select
ActiveCell.Select
End Sub

Sieht hier jemand den Fehler ??


Viele Grüße - Petra


Antwort schreiben

Antwort 1 von malSchauen vom 12.10.2021, 12:35 OptionsLösung

Lösung
Hi,

Zwei Ansätze:

- Ändere den Datentyp von "eingabe" in einen Zahlentyp (Integer, Long, Double,...) NACHTEIL: Fehler zur Laufzeit, wenn die Eingabe in der InputBox nicht numerisch ist.

-Ändere die Zeile mit dem .Match z.B. wie folgt:
zeile = Application.WorksheetFunction.Match(CDbl(eingabe), Range("A5:A65536"), 0)
"eingabe" muss dann aber auch zwingend numerisch sein.

bye
malSchauen

Antwort 2 von fedjo vom 12.10.2021, 12:39 Options

Hallo Petra,
vielleicht hilft dir der Code weiter.
Gesucht wird der Wert in A2 von A5 bis....

Oder sollte die Eingabe der InputBox gesucht werden?
eingabe = InputBox("Bitte geben Sie die Kunden - Nummer ein:", "Dateneingabe:")

Gruß
fedjo


Sub Suchen()
Dim eingabe As Integer
Dim lngAnz
eingabe = Range("A2").Value
lngAnz = WorksheetFunction.CountIf(Range("A5:A1000"), eingabe)
Sheets(1).Range("A5:A1000").Find(What:=eingabe, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
False).Activate 'Ergebniss wird Select
End Sub

Antwort 3 von Petra65 vom 12.10.2021, 12:49 Options

Hi,

super .... habe den Code entsprechend abgeändert - und es funktioniert ;-))))

Lt. Google: ist es richtig, dass CDbl den Datentyp von "eingabe" in den Datentyp Double umwandelt ??

Also funktionierte es nicht, da die Datentypen nicht zueinander passten ??


Wie dem auch sei .. vielen Dank

Gruss - Petra

Antwort 4 von malSchauen vom 12.10.2021, 13:17 Options

Hi,

Für Infos über die Typwandlungsfunktion stelle den Eingabe-Cursor im VBA-Editor einfach mal auf den entsprechenden Codeteil (CD|bl) und drücke die Taste "F1".
Und nein: Der Datentyp von "eingabe" wird in diesem Fall nicht geändert. "eingabe" ist nach wie vor eine Variable vom Typ String. Allerdings wird so der MatchFunktion ein Wert vom Typ Double übergeben, und .Match sucht nach einer ZAHL.

Warum der Fehler?:
"eingabe" ist vom Typ String. Match suchte also einen TEXT, kann diesen aber in den Zahlen der SpalteA nicht finden. Gleiches wird Dir jetzt immernoch passieren, wenn die zu suchende Zahl nicht in SpalteA vorhanden ist. Kommentiere einfach mal die Zeile On Error GoTo ERRORHANDLER aus. Dann siehst Du was passiert

bye
malSchauen

Antwort 5 von Petra65 vom 12.10.2021, 15:07 Options

Hallo,

vielen Dank für die Erklärung ....

Werde dann mal noch eine Abfrage einbauen, so dass es zumindest einen Hinweis gibt wenn ein ungüliger Wert, bzw. ein Wert, der nicht vorhanden ist, eingegeben wurde.


Vielen Dank nochmals ...

Gruss - Petra

Ähnliche Themen

VBA ganauen Wert suchen
fedjo  01.02.2009 - 227 Hits - 12 Antworten

Werte in anderer Excel-Tabelle suchen (Kopieren)
nero022  15.02.2009 - 1568 Hits - 21 Antworten

Wert aus Tabelle nach 2 Kriterien
andreas_3  25.03.2009 - 172 Hits - 1 Antwort

Textlänge Application.InputBox, Inputbox
Tomschi  26.06.2009 - 226 Hits - 8 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026