Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1784to1788
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

Excel VBA - String Suche

Excel VBA - String Suche
28.09.2020 20:10:30
Marcel
Hallo zusammen
Ich habe ein CSV File das ich in Excel importiert habe. Dies sieht wie im Beispiel unten aus. Nun versuche ich gerade in Excel VBA einen kleinen Code zu schreiben, der mir über einen Button in einer Spalte A über zwei zugehörige Strings (Strings als Eingabe in einem Eingabefeld) sucht und dann entsprechend über die Spalte B in Abhängigkeit von Spalte C (für Europa +1 Tage / Amerika +2 Tage) einen Rückgabewert ausgibt.
Als bessere Erklärung sollen folgende Schritte dies verdeutlichen:
1. Drücken von einem Button
2. Ein Eingabefeld1 (VBA) soll erscheinen in dem der Suchstring1 eingeben werden kann: "Fiat2"
3. Ein Eingabefeld2 (VBA) soll erscheinen in dem der Suchstring2 eingeben werden kann: "Abnahme"
4. Rückgabewert in einer MsgBox soll nun das Datum 26.04.2020 sein
Bemerkung: Das Datum 26.04.2020 wird so berechnet das "Fiat2" mit dem Feld "Abnahme" in Zeile 9 gefunden wird. Dies hat in der Spalte B das Datum 24.04.2020 mit der Abhängigkeit von Spalte C "Amerika", was bedeutet, dass als Ausgabewert das Datum mit 2 Tagen addiert werden soll (Europa würde eine Addition mit einem Tag bedeuten). Als Rückgabewert in der MsgBox erscheint nun das Datum 26.04.2020.
………………….( Spalte A )……..............…….( Spalte B )……..............…….( Spalte C)
( Zeile 1 )………….Task Name…………………….….Datum……………………….….Ort
( Zeile 2 )…………..Auto Fiat1…………………….….22.03.2020……………….…….Europa
( Zeile 3 )……….….Start…………………………..….23.03.2020
( Zeile 4 )……….….Bemalung………………….…….24.03.2020
( Zeile 5 )…………..Abnahme……………………..….25.03.2020
( Zeile 6 )……….….Fertigstellung……………......….26.03.2020
( Zeile 7 )…………. Auto Fiat2…………...................22.04.2020……................…….Amerika
( Zeile 8 )……….….Start………...........................….23.04.2020
( Zeile 9 )……….….Bemalung………..................….24.04.2020
( Zeile 10 )……...….Abnahme………..................….25.04.2020
( Zeile 11 )……...….Fertigstellung…...........………. 26.04.2020
( Zeile 12 )…..….….Auto Fiat3………..................….22.05.2020…….................…….Europa
( Zeile 13 )………….Start…………........................... 23.05.2020
( Zeile 14 )………….Bemalung……...................…….24.05.2020
( Zeile 15 )………….Abnahme………....................….25.05.2020
( Zeile 16 )………….Fertigstellung…….............…….26.05.2020
( Zeile 16 )…………. usw. ……………….................…….usw. ............................…...usw.
Ich komme aber gerade nicht vom Fleck und wollte fragen ob mir jemand helfen kann. Für jede Hilfe oder Codebeispiel wäre ich sehr dankbar.
Besten Dank.
Marcel

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA - String Suche
28.09.2020 20:51:48
Daniel
Hi
beispielsweise so:
Sub test()
Dim Wert1 As String
Dim Wert2 As String
Dim Ergebnis As Date
Dim Zelle1 As Range
Dim Zelle2 As Range
Wert1 = InputBox("Hinweistext 1")
Wert2 = InputBox("Hinweistext 2")
If Wert1 = "" And Wert2 = "" Then Exit Sub
Set Zelle1 = Columns(1).Find(what:=Wert1, lookat:=xlWhole, searchdirection:=xlNext)
Set Zelle2 = Columns(1).Find(what:=Wert2, after:=Zelle1, lookat:=xlWhole, searchdirection:= _
xlNext)
If Zelle1 Is Nothing Or Zelle2 Is Nothing Then
MsgBox "Eine Eingabe konnte nicht gefunden werden."
Exit Sub
End If
Ergebnis = Zelle2.Offset(0, 1).Value
Select Case Zelle1.Offset(0, 2).Value
Case "Europa": Ergebnis = Ergebnis + 1
Case "Amerika": Ergebnis = Ergebnis + 2
Case Else
End Select
MsgBox Format(Ergebnis, "DD.MM.YYYY")
End Sub
es muss aber sichergestellt sein, dass jeder Text auch bei jedem Fahrzeug vorkommt.
denn wenn du nach "Fiat2" und "Abnahme" suchst und Fiat2 keine Abnahme hat sondern erst wieder Fiat3, wird die Abnahme von Fiat3 gefunden.
Gruß Daniel
Anzeige
AW: Excel VBA - String Suche
29.09.2020 08:23:04
Marcel
Hallo Daniel
Besten Dank für deine Hilfe. Ich habe den Code entsprechend in mein Excel hineinkopiert, jedoch erscheint mir bei Set Zelle1 ein "Laufzeitfehler '13': Typen unverträglich". Kann mir da jemand weithelfen wieso dies der Fall ist?
Gruss Marcel
AW: Excel VBA - String Suche
29.09.2020 09:34:37
Daniel
Hi
bei Set Zelle1 darf dieser Fehler eigentlich nicht erscheinen
bei Set Zelle2 kommt der Fehler, wenn du beim Suchbegriff für der das Auto einen nicht vorhandene Wert eingegeben hast.
hier müsstest du dann die Prüfung mit IF Zelle1 is Nothing vorziehen und für jedes .FIND separat durchführen.
Gruß Daniel
AW: Excel VBA - String Suche
29.09.2020 09:43:53
Marcel
Hallo Daniel
Der Fehler liegt daran das der Suchbegriff genau den String abbilden muss. Das heisst "Fiat2" generiert den Fehler, "Auto Fiat2" wiederum nicht. Wie kann ich den Suchbegriff an justieren das es für "Fiat2" funktioniert?
Gruss Marcel
Anzeige
AW: Excel VBA - String Suche
29.09.2020 09:54:46
Daniel
Hi
Jokerzeichen mit eingeben "*Fiat2*"
oder in der Suche von LookAt:=xlwhole auf LookAt:=xlpart umstellen.
Gruß Daniel
AW: Excel VBA - String Suche
29.09.2020 10:22:37
Marcel
Super funktioniert einwandfrei.
Gruss Marcel
AW: Excel VBA - String Suche
29.09.2020 09:44:17
Werner
Hallo,
die Suche mit Find müsste mit LookAt:=xlPart durchgeführt werden, da offensichtlich nicht nur Fiat1 in der Zelle steht.
Sub Schaltfläche1_Klicken()
Dim strSuche1 As String, strSuche2 As String, raFund As Range, i As Long
With Worksheets("Tabelle1")
strSuche1 = InputBox("Suchtext 1")
If strSuche1 = vbNullString Then Exit Sub
strSuche2 = InputBox("Suchtext 2")
If strSuche2 = vbNullString Then Exit Sub
Set raFund = .Columns("A").Find(what:=WorksheetFunction.Proper(strSuche1), _
LookIn:=xlValues, lookat:=xlPart)
If Not raFund Is Nothing Then
For i = raFund.Row To raFund.Row + 4
If .Cells(i, "A") = WorksheetFunction.Proper(strSuche2) Then
MsgBox IIf(raFund.Offset(, 2) = "Amerika", .Cells(i, "B") + 2, .Cells(i, "B") +  _
1)
Exit For
End If
Next i
Else
MsgBox "Der Suchbegriff " & strSuche1 & " wurde nicht gefunden."
End If
End With
Set raFund = Nothing
End Sub
Gruß Werner
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige