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

InStr Function

InStr Function
29.04.2022 10:40:49
Henry
Hallo liebes Forum,
ich benötige mal wieder eure Hilfe.
Ich habe eine Inputpux, in der ich bspw. folgende Eingabe mache: 5,5
(Zur Erläuterung: 5 = Spalte E; 5 = Zeile 5)
Mithilfe der InStr-Funtion würde ich diese Zahlen gerne auslesen.
Sprich:
Erstes Zeichen auslesen; Ergebnis = 5
Zeichen nach dem Komma auslesen; Ergebnis = 5.
Kann mir jemand mithilfe der InStr-Function helfen?
Über Eure Rückmeldung würde ich mich freuen.

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: InStr Function
29.04.2022 10:45:54
{Boris}
Hi,

Sub test()
Const s As String = "6,5"
Dim Spalte As Long, Zeile As Long
Spalte = Left(s, InStr(1, s, ",") - 1)
Zeile = Mid(s, InStr(1, s, ",") + 1, 9)
MsgBox Spalte
MsgBox Zeile
End Sub
Rückgabewerte ggfls. in Zahlen umwandeln (mit CLng).
Geht alternativ auch mit Split.
VG, Boris
AW: InStr Function
29.04.2022 11:01:32
Henry
Hallo Boris,
vielen Dank für deine Hilfe.
Die Eingabe der Werte ist allerdings variabel über eine Inputpux.
Mein Code beginnt wie folgt:
Dim eingabe As String
eingabe = InputBox("Bitte geben Sie die Zelladresse ein")
Kann man deinen Code darauf zuschneiden?
Anzeige
Du musst doch nur...
29.04.2022 11:09:53
{Boris}
Hi,
...die Variable s durch die Variable eingabe ersetzen.
VG, Boris
AW: Du musst doch nur...
29.04.2022 11:14:04
Henry
Hallo Boris,
du hast natürlich Recht.
Der Code klappt nun hervorragend.
Ich finde es immer gut zum Lernen, wenn man weiß, was man da programmiert.
Wärst du so nett und würdest mir die beiden folgenden Zeilen noch erklären?
Spalte = Left(eingabe, InStr(1, eingabe, ",") - 1)
Zeile = Mid(eingabe, InStr(1, eingabe, ",") + 1, 9)
Hmmm...
29.04.2022 11:18:17
{Boris}
Hi,
...das sind die VBA-Funktionen für LINKS (Left) und TEIL (Mid) - und InStr fungiert wie FINDEN bzw. SUCHEN.
Drück einfach mal F1, während der Cursor innerhalb der Funktionen blinkt ;-)
Wenn Dein angegebener Excel-Level stimmt, solltest Du das damit hinbekommen :-)
VG, Boris
Anzeige
AW: Hmmm...
29.04.2022 11:20:45
Henry
Mir ist ehrlich gesagt nicht klar, wofür die 9 steht bei der Mid-Function
Anzahl_Zeichen / Length
29.04.2022 12:15:56
{Boris}
Hi,
der letzte Parameter der TEIL bzw. MID-Funktion (Anzahl_Zeichen bzw. Length) muss nicht exakt angegeben werden - es reicht, wenn man ihn mit einem Wert angibt, den man maximal benötigen kann - ich habe 9 gewählt - hätte auch 7 oder 99 lauten können, wobei 7 das Minimum sein sollte, damit auch Zeile 1000000 (das sind 7 Zeichen) korrekt ausgelesen werden kann.
VG, Boris
AW: Anzahl_Zeichen / Length
29.04.2022 13:34:45
Daniel
HI
das ist nur in einer Excelformel der Fall, die Excelfunktion TEIL benötigt den dritten Parameter (Textlänge), welcher aber auch größer sein darf, wenn der Text bis zum Ende genommen werden soll
in VBA hingegen darfst bei der Funktion MID diesen dritten Parameter weglassen, wenn du den Text bis zum Ende benötigst:
also
erster Wert = Left(txt, instr(txt, ",")-1)
zweiter Wert = Mid(txt, Intstr(txt, ",") + 1)
Gruß Daniel
Anzeige
Stimmt natürlich…
29.04.2022 17:58:01
{Boris}
Hi Daniel,
…bin dabei immer zu sehr auf der reinen Formelseite unterwegs.
Aber stören tut‘s halt auch nicht ;-)
VG Boris
AW: Stimmt natürlich…
30.04.2022 08:30:50
Henry
Hallo liebes Forum,
vielen Dank für eure zahlreiche Hilfe.
Nun klappt alles wie gewünscht.
Eine kleine Sache hätte ich noch.
Ich würde nun gerne in einer MsgBox die Spalte und die Zeile ausgeben.
Allerdings soll die Spalte keine Nummer sein, sondern ein Buchstabe.
Mein Code sieht bislang wie folgt aus:

Private Sub CellsColour_Click()
Dim eingabe As String
Dim Spalte As Long, Zeile As Long
eingabe = InputBox("Bitte geben Sie die Zelladresse ein")
Spalte = Right(eingabe, InStr(1, eingabe, ",") - 1)
Zeile = Left(eingabe, InStr(1, eingabe, ",") - 1)
MsgBox "Spalte: " & Spalte & Chr(13) & "Zeile: " & Zeile
End Sub

Anzeige
AW: Stimmt natürlich…
30.04.2022 19:39:19
Daniel
Schön.
Und was ist deine Frage?
AW: Stimmt natürlich…
30.04.2022 20:27:38
GerdL
MsgBox "Zeile: " & cells(Zeile, Spalte).Address(0. ü. xlA1)
Allerdings...
29.04.2022 11:13:11
{Boris}
Hi,
...bietet sich für diesen Fall der Vorschlag von Onur mit Split an.

Private Sub CommandButton1_Click()
Dim arr, Spalte As Long, Zeile As Long
arr = Split(Me.TextBox1, ",")
Spalte = arr(0)
Zeile = arr(1)
MsgBox "Spalte: " & Spalte & vbLf & "Zeile: " & Zeile
End Sub
VG, Boris
AW: Allerdings...
29.04.2022 17:15:03
Luschi
Hallo {Boris},
bei Split sollte man noch eine kleine Sicherheitsüberprüfung einbauen, denn wenn kein Komma im Inhalt der Textbox enhalten ist, entsteht auch kein Array:

Private Sub CommandButton1_Click()
Dim arr, Spalte As Long, Zeile As Long
arr = Split(Me.TextBox1, ",", -1, vbTextCompare)
If VarType(arr) >= vbArray Then
Spalte = arr(0): Zeile = arr(1)
MsgBox "Spalte: " & Spalte & vbLf & "Zeile: " & Zeile
Else
MsgBox "falsche Eingabe!", 16 + 65536
End If
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: InStr Function
29.04.2022 10:47:33
onur
Nimm die Split-Funktion.
arr=split(Textbox1,",")
Dann hat du arr(0) und arr(1)
AW: InStr Function
29.04.2022 11:55:42
GerdL
Dim R As Range
On Error Resume Next
Set R = Application.InputBox(Prompt:="Bitte markieren", Title:="Zelle", Type:=8)
On Error GoTo 0
If Not R Is Nothing Then
MsgBox " Markiert ist " & R.Address
End If
AW: InStr Function
29.04.2022 17:30:32
snb

Sub M_snb()
y = InputBox("Zeile, Spalte") * 10
Cells(y \ 10, y Mod 10).Select
End Sub

AW: InStr Function
29.04.2022 19:31:42
Daniel
hat dein Excel nur 9 Spalten?
AW: InStr Function
29.04.2022 17:47:58
snb
'Etwas' besser

Sub M_snb()
Range(Evaluate("Address(" & InputBox("Zeile, Spalte") & ")")).Select
End Sub
:
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige