Input und Umwandlung

Hallo Experten,

ich stehe mal wieder auf der Leitung mit folgendem Problem:
Ich habe eine VBA Prozedur in der ich feste Werte für diverse Variablen festgelegt habe.
Diese Variablen möchte ich nun per „ Input „ festlegen bevor das Makro startet.

Beispiel : x = 3 , y = 6 , starte bei x,y ( also Zelle C6 ).

Nun möchte ich eine Art Inputfenster erscheinen lassen indem man aufgefordert wird die
Startzelle ( in o.g. Fall C6 ) einzugeben. Danach will ich diese Zelle „C6“ in x und y in meiner
VBA Prozedur auflösen ( also 3 , 6 ). Wer weiss wie so etwas geht ?

Dankbare Grüße Peter

z.B. mit Ascii Codes rechnen…
Moin Peter,

eine von vielen Möglichkeiten: du schappst dir das erste Zeichen von links, wandelst es zum Großbuchstaben (dann kann der User auch „c6“ eingeben) und ermittelst den Ascii-Code, davon den des Buchstabens „A“ abziehen und eins drauf, damit Spalte A auch die Nr. 1 erhält.
Ab dem zweiten Zeichen, das aus der InputBox kommt, wird dieser Wert nur zu einer Zahl gewandelt.
Probier’s mal in deinem Makro aus. Ich weiß um die Schwächen meiner kleinen Lösung:

  • geht nur in den Spalten A-Z
  • keine Kontrolle der Benutzereingabe

Aber vielleicht reicht es dir ja :wink:

Dim s As String
Dim x As Integer
Dim y As Integer

s = InputBox("Eingabe Start-Zelle", "Startzelle", "A1")
x = Asc(UCase(Left(s, 1))) - Asc("A") + 1
y = CInt(Right(s, Len(s) - 1))

Cheers
Hawky

Hallo Peter,

hier noch eine Variante:

dim Zelle as range
wiederholen:
set zelle = application.inputbox(„Startzelle:“,type:=8)
if zelle is nothing then exit sub
if zelle.cells.count>1 then goto wiederholen
x=Zelle.column
y=zelle.row

Diese Logik bewirkt folgendes:
Die Inputbox überprüft automatisch, ob die Eingabe ein gültiger Zellbereich ist - und nicht etwa „Pepi und Co“.
Wenn in der Inputbox auf Abbruch geklickt wird, dann ist zelle auf nothing gesetzt. Damit kannst du das Programm vorzeitig beenden.
Wenn mehr als eine Zelle angegeben werden, dann ist das ja keine sinnvolle Eingabe für dich - daher zurück an den Start.
Tja und dann kannst du direkt aus der Zelladresse Spalte und Zeile ableiten.

lg Maria

Hallo,
vielen Dank für Eure Lösungsvorschläge, aber mein Knoten ist inzwischen geplatzt. Das ganze stellte sich folgendermaßen ein :

Dim x As Long, y As Long
Dim Mldg, Titel, Voreinstellung, Wert1
Mldg = "Startzelle eingeben"
Titel = "Eingabeaufforderung"
Voreinstellung = "C6"
Wert1 = InputBox(Mldg, Titel, Voreinstellung)
If Wert1 = "" Then End
With Sheets("Tabelle1")
x = Range([Wert1]).Column
y = Range([Wert1]).Row
End With

Vielen Dank nochmal an alle, Gruß Peter