Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: KeyAscii Textbox wert in Zelle schreiben

KeyAscii Textbox wert in Zelle schreiben
31.07.2006 12:37:49
Daniel
Hallo ExcelFreunde,
ich habe heute diesen KeyAscii-Code im Forumarchiv entdeckt. Sieht gut aus nur komm ich mit der Umsetzung nicht so richtig hin. Genauer gesagt ich kenne auch die KeyPress Funktion erst seit heute.
Mein Problem:
Den numerischen Textbox1 Zahlenwert moechte ich in das Tabellenblatt userforms in Zelle B29 reingeschrieben haben. Wenn ich die userform abspiele und die erste ziffer eingebe passiert nach dem ersten tastendruck nichts sichtbares, die ziffer wird irgendwo gespeichert. Beim zweiten Tastendruck wird die zuerst getippte Ziffer in B29 geschrieben. Nach drei/vier Ziffern waere der user fertig und wuerde mit nem commandobutton die etwa vierstellige Zahl bestaetigen und die userform verlassen. Es fehlt aber immer die zuletzt eigegebene ziffer... wo bekomme ich diese letzte getippte ziffer nun her oder was muss ich umschreiben oder ergaenzen?
hoffe mir kann jemand die KeyPress und diese KeyAscii funktion dazu erklaeren und meinen unten aufgefuerhten code reparieren.
Nochwas kennt vielleicht jemand den Case-Code fuer nen Punkt "." ?
vielen dank schon im voraus fuer euere hilfe!!!
viele gruesse Daniel

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 44             'Komma
Case 48 To 57       'zahlen von 1 bis 9
Case Else           'alle anderen zeichen ignorieren
KeyAscii = 0
End Select
Sheets("userforms").Select          'tabellenblatt
Range("b29").Value = TextBox1.Value 'Zielzelle im Tabellenblatt
End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: KeyAscii Textbox wert in Zelle schreiben
31.07.2006 13:27:46
Luschi
Hallo Daniel,
mach es so und nutze das KeyDown-Ereignis statt dem KeyPress-Ereignis, denn hier wird das Drücken der Enter-Taste mit ausgewertert.
Allerdings ändern sich dadurch die KeyCode-Werte gegenüber den KeyAscii-Werte etwas:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 8               'BackSpace-Taste zum Korrigieren
Case 188             'Komma
'nur 1 Kommastelle zulasen
If InStr(1, Me.TextBox1.Text, ",", vbTextCompare) > 0 Then
KeyCode = 0
End If
Case 37, 39          'Cursor-Tasten (<— und —>)
Case 46              'Entf-Taste
Case 48 To 57        'Zahlen von 0 bis 9 (Zifferntastatur)
Case 96 To 105       'Zahlen von 0 bis 9 (Nummerntastatur)
Case 13              'Enter-Taste (<——')
Sheets("Tabelle1").Select          'tabellenblatt
Range("b29").Value = CDbl(TextBox1.Value) 'Zielzelle im Tabellenblatt
Case Else           'alle anderen zeichen ignorieren
KeyCode = 0
End Select
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Left(Me.TextBox1.Text, 1) = "," Then
'wenn an 1. Stelle kein Komma stehen soll
'Me.TextBox1.Text = Mid(Me.TextBox1.Text, 2)
End If
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: KeyAscii Textbox wert in Zelle schreiben
31.07.2006 13:30:51
ANdreas
Hallo Daniel,
wenn das KeyPress Ereignis durchlaufen wird, ist die gedrückte Zahl noch nicht im Textbox.Value enthalten. Daher so:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 44, 48 To 57           'Komma + Ziffern von 1 bis 9
Case Else: KeyAscii = 0     'alle anderen zeichen ignorieren
End Select
Sheets("userforms").Range("B29").Value = _
TextBox1.Value & Chr(KeyAscii) 'Zielzelle im Tabellenblatt
End Sub

Und bitte auf Select verzichten.
Gruß
Andreas
Anzeige
AW: KeyAscii Textbox wert in Zelle schreiben
31.07.2006 14:10:12
Daniel
Hi Luschi und Andreas,
auf die schnelle hab ich mal die Loesung vom Andreas eingearbeitet und sie funktioniert.... sie funktioniert... hahaha
morgen werd ich mal Luschis ausfuehrlichere loesung testen und davon berichten.
Danach werde ich weiter daran arbeiten die weltherrschaft an mich reissen. ;o)
vielen Dank nochmals Freunde. Herzlichste gruesse aus downunder.
Daniel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

KeyAscii Textbox Wert in Zelle Schreiben


Schritt-für-Schritt-Anleitung

Um den Wert einer TextBox in eine Zelle zu schreiben, kannst Du das KeyPress-Ereignis oder das KeyDown-Ereignis in Deiner UserForm verwenden. Hier ist eine einfache Anleitung:

  1. Öffne Deinen VBA-Editor in Excel (Alt + F11).
  2. Füge eine UserForm hinzu und platziere eine TextBox und einen CommandButton darauf.
  3. Doppelklicke auf die TextBox und füge den folgenden Code ein:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
    Case 44, 48 To 57           ' Komma + Ziffern von 0 bis 9
    Case Else: KeyAscii = 0     ' alle anderen Zeichen ignorieren
    End Select
    Sheets("userforms").Range("B29").Value = TextBox1.Value & Chr(KeyAscii) ' Zielzelle im Tabellenblatt
End Sub
  1. Wenn Du die Enter-Taste verwenden möchtest, ändere das Event zu KeyDown:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Select Case KeyCode
    Case 13              ' Enter-Taste 
        Sheets("userforms").Range("B29").Value = TextBox1.Value ' Zielzelle im Tabellenblatt
    End Select
End Sub
  1. Teste die UserForm und gib Werte in die TextBox ein. Der Wert sollte in Zelle B29 geschrieben werden.

Häufige Fehler und Lösungen

  • Problem: Die letzte eingegebene Ziffer wird nicht angezeigt.

    • Lösung: Stelle sicher, dass Du im KeyPress-Event den KeyAscii-Wert an den aktuellen Wert der TextBox anhängst, wie im Beispiel gezeigt.
  • Problem: Der Wert wird nicht in die richtige Zelle geschrieben.

    • Lösung: Überprüfe den Blattnamen und die Zellreferenz. Der Code sollte auf das richtige Arbeitsblatt zeigen (Sheets("userforms")).

Alternative Methoden

Eine alternative Methode zur Verarbeitung von Tasteneingaben ist die Verwendung des KeyUp-Ereignisses, um Zeichen zu verarbeiten, nachdem sie in die TextBox eingegeben wurden. Hier ist ein Beispiel:

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then ' Enter-Taste
        Sheets("userforms").Range("B29").Value = TextBox1.Value ' Zielzelle im Tabellenblatt
    End If
End Sub

Diese Methode kann nützlich sein, um Eingaben nach dem Drücken der Taste zu verarbeiten.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du den KeyAscii-Wert in VBA verwenden kannst:

  1. Zahlen und Kommas zulassen:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
    Case 44, 48 To 57
    Case Else: KeyAscii = 0
    End Select
End Sub
  1. Backspace und Enter-Taste verarbeiten:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Select Case KeyCode
    Case 8  ' Backspace
    Case 13 ' Enter
        Sheets("userforms").Range("B29").Value = TextBox1.Value
    End Select
End Sub

Diese Beispiele zeigen, wie Du den KeyAscii und KeyCode effektiv in Deiner Excel-Anwendung nutzen kannst.


Tipps für Profis

  • Verwende KeyDown statt KeyPress: KeyDown ermöglicht es Dir, die Enter-Taste und andere Tasten einfacher zu verarbeiten.
  • Vermeide Select: Direkte Referenzen auf Zellen sind schneller und effizienter.
  • Prüfe Eingaben: Verwende CDbl oder CStr, um sicherzustellen, dass die Eingaben dem erwarteten Datentyp entsprechen.

FAQ: Häufige Fragen

1. Was ist KeyAscii in VBA?
KeyAscii ist ein Wert, der den gedrückten Tastencode repräsentiert. Du kannst damit Tasteneingaben in einer UserForm verarbeiten.

2. Wie kann ich die Enter-Taste mit KeyAscii verwenden?
Du kannst KeyAscii = 13 verwenden, um die Enter-Taste zu erkennen und spezifische Aktionen auszuführen, wenn sie gedrückt wird.

3. Gibt es eine Möglichkeit, andere Zeichen zuzulassen?
Ja, Du kannst weitere Case-Anweisungen im Select Case-Block hinzufügen, um zusätzliche Zeichen zuzulassen, wie z.B. Punkte oder spezielle Symbole.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige