Clever-Excel-Forum

Normale Version: Zwangseingabe für bestimmte Zellen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

auf meiner suche nach einer Möglichkeit nur bestimme Eingabemöglichkeiten für eine Zelle zuzulassen bin ich im Internet auf folgenden Forumbeitrag gestoßen: http://www.office-loesung.de/ftopic203902_0_0_asc.php. Leider ist dieser Beitrag schon von 2008 und lässt wegen Serverwartungen keine Antworten mehr zu.

Ich möchte gerne das es in den betreffenden Zellen nur möglich ist eine 5-stellige Zahl einzugeben und anschließend diese in folgenden Format wieder gegeben wird: z.B K12345. Die Formatierung würde ich über eine benutzerdefinierte Formatierung lösen und der Code ist eigentlich auch schon ziemlich gut. An den Code stört mich jedoch, dass er zum einen wenn man ausversehen auf die ganze Spalte klickt, die komplette Spalte geändert wird und somit alle anderen Werte überschrieben werden. Außerdem stört mich, dass falls ich auf eine falsche Splate komme, man nicht mehr das Eingabefenster schließen kann um somit den Vorgang abzubrechen. Habt ihr eine Lösung für mein Problem?


Hier noch einmal der Code:

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Columns("R")) Is Nothing Then Exit Sub

   Dim strInp As String
   Do
      strInp = InputBox("xyz...", "Titel", "00")
   Loop While Len(strInp) <> 2 Or IsNumeric(strInp) = False Or StrPtr(strInp) = False
   Target.Value = strInp

End Sub
Hallo,

Zitat:An den Code stört mich jedoch, dass er zum einen wenn man ausversehen auf die ganze Spalte klickt, die komplette Spalte geändert wird und somit alle anderen Werte überschrieben werden.
Dann brauchst du einfach eine zweite If-Bedingung, die prüft, wie viele Zellen du ausgewählt hast:
Code:
If Target.Cells.Count > 1 then Exit Sub
Zitat:stört mich, dass falls ich auf eine falsche Splate komme, man nicht mehr das Eingabefenster schließen kann um somit den Vorgang abzubrechen.
Wenn du bei einer Input-Box auf abbrechen drückst, ist deine Variable strInp leer. Hier brauchst du also eine If-Abfrage, die prüft, ob der Wert nicht leer ist. (solltest du analog zu den beiden anderen Abfragen selber hinbekommen)
Auch auf die Gefahr, dass es jetzt ein bisschen unverschähmt ist, könntest du mir vielleicht den Code schreiben? Habe lediglich durch Java etwas Hintergrundwissen mit dem Programmieren aber sonst bin ich leider ein totaler Anfänger...
Code:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   
   Dim strInp As String

'Wenn nicht Spalte R, dann abbrechen
   If Intersect(Target, Columns("R")) Is Nothing Then Exit Sub
'Wenn mehr als 1 Zelle, dann abbrechen
   If Target.Cells.Count > 1 Then Exit Sub

'So lange aufrufen, bis entweder abbrechen oder entsprechend Vorgabe
  Do
     strInp = InputBox("xyz...", "Titel", "00")
     If strInp = "" Then Exit Sub
  Loop While Len(strInp) <> 2 Or IsNumeric(strInp) = False Or StrPtr(strInp) = False
  Target.Value = strInp

End Sub

Wobei ich dir empfehlen würde, dich ein bisschen z.B. [url=
Dateiupload bitte im Forum! So geht es: Klick mich!
] oder hier, in VBA einzuarbeiten, sonst bist du bei der nächsten Kleinigkeit wieder auf das Forum angewiesen...