Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zwangseingabe für bestimmte Zellen
#1
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
Antwortento top
#2
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)
Viele Grüße,
Matthias

-------------------------------------------------------------------------------------------

Man muß nicht alles wissen, man muß nur wissen, wie man die Lösung findet.
[-] Folgende(r) 1 Benutzer sagt Danke an Matthias84 für diesen Beitrag:
  • ManuelBothner
Antwortento top
#3
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...
Antwortento top
#4
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. hier oder hier, in VBA einzuarbeiten, sonst bist du bei der nächsten Kleinigkeit wieder auf das Forum angewiesen...
Viele Grüße,
Matthias

-------------------------------------------------------------------------------------------

Man muß nicht alles wissen, man muß nur wissen, wie man die Lösung findet.
[-] Folgende(r) 1 Benutzer sagt Danke an Matthias84 für diesen Beitrag:
  • ManuelBothner
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste