Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Mit InStr zwei Informationen einholen VBA

Begonnen von stieler, Februar 13, 2017, 19:23:24

⏪ vorheriges - nächstes ⏩

stieler

Hallo Zusammen,

ich bin neu hier, Anfänger und mehr als ratlos...

Folgendes Problem:
In einer Tabelle lese ich ein Feld aus was folgende Daten enthalten kann

1. 1234a 12345
2. 1234 12345
3. 12345
oder
4. keine Daten (Feld ist leer).


die Zahlen sind nur ein Beispiel, kann also auch 23456 34567 sein, fakt ist, dass immer wenn zwei Werte vorhanden sind, sie durch ein Blank getrennt sind.
mit dem Code hier versuche ich zu "erahnen" was ich gefunden habe

Mit den Code hier
'Prüfen ob brauchbare Daten vorhanden sind
intLeerPos = InStr(rs1![Daten_1], " ")
str1 = Left(rs1![Daten1], intLeerPos)
str2 = Right(rs1![Daten1], intLeerPos)

funktioniert es nur ab und zu. Mal vergist str1 mit das 2 von Beispiel 1 zu liefern, oder manchmal bekomme ich gar keine Infos, obwohl Beispiel 3 einen Wert hat.

Kann mir bitte jemand helfen und sagen wo ich den Fehler habe.

DANKE!


daolix

hallo
versuch mal

Code (ohne Gewähr) [Auswählen]
intLeerPos = InStr(nz(rs1![Daten_1], ""), " ")
if intLeerPos then 'vom typ 1 u. 2
str1 = Left(rs1![Daten1], intLeerPos)
str2 = Right(rs1![Daten1], intLeerPos)
else 'vom type 3 und andere
str1 = nz(rs1![Daten1], "")
end if

Lachtaube

InStr liefert Null als Ergebnis, falls String1 Null ist, 0 falls String2 nicht in String1 gefunden wurde und einen Wert größer Null als Position des ersten Vorkommens von String2 in String1.

Demnach kann man so vorgehen:   Dim data As Variant, pos As Variant

   data = rs1![Daten_1]
   pos = InStr(data, " ")

   Select Case pos
   Case Is > 0
      str1 = Left$(data, pos - 1)
      str2 = Mid$(data, pos + 1)
   Case 0
      str1 = data
   'Case Else
      'Fall 4
   End Select
Grüße von der (⌒▽⌒)

stieler

DANKE...da wäre ich alleine niemals drauf gekommen!