Supportnet / Forum / Tabellenkalkulation
wert von textbox in zelle einfüllen
Frage
hallo,
ich möchte über eine textbox werte in eine zelle eingeben.
nach eingabe eines wertes soll automatisch die darunter liegende zelle gefüllt werden, usw
Antwort 1 von Event
Hallo
Gib einfach in den Eigenschaften der TextBox neben LinkedCell die Zelladresse z.B Tabelle1!B3
ein.
Gruß
Gib einfach in den Eigenschaften der TextBox neben LinkedCell die Zelladresse z.B Tabelle1!B3
ein.
Gruß
Antwort 2 von coros
Hallo walcarre,
leider schreibst Du nicht, wo sich die TextBox befindet, also ob in einem Tabellenblatt oder in einer UserForm und in welcher Spalte der Wert übergeben, sprich in die nächste freie Zeile eingetragen werden soll. Ich bin mal von einer TextBox in einem Tabellenblatt ausgegangen. Kopiere nachfolgenden Code in das VBA Projekt der Tabelle, in dem sich das Textfeld befindet. Sollte sich das Textfeld in einer UserForm befinden, kopiere den Code in die UserForm, in der sich das Feld befindet.
Bei dem Code wird der Wert aus der TextBox nach dem Betätigen der Entertaste in die nächste freie Zeile in Spalte A übertragen. Wenn der Wert nicht in Spalte A soll, dann musst Du in der Zeile
Cells(Range("A65536").End(xlUp).Offset(1, 0).Row, 1) = TextBox1
zunächst einmal die Zellebezeichnung A gegen den Buchstaben der Spalte in der der Wert übertragen werden soll ändern und die Spaltenindexzahl (ist die Zahl hinter dem Komma in der Klammer) ebenfalls. Die 1 steht für Spalte A, eine 2 würde für Spalte B stehen, eine 3 für C, eine 4 für D usw.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
leider schreibst Du nicht, wo sich die TextBox befindet, also ob in einem Tabellenblatt oder in einer UserForm und in welcher Spalte der Wert übergeben, sprich in die nächste freie Zeile eingetragen werden soll. Ich bin mal von einer TextBox in einem Tabellenblatt ausgegangen. Kopiere nachfolgenden Code in das VBA Projekt der Tabelle, in dem sich das Textfeld befindet. Sollte sich das Textfeld in einer UserForm befinden, kopiere den Code in die UserForm, in der sich das Feld befindet.
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
Cells(Range("A65536").End(xlUp).Offset(1, 0).Row, 1) = TextBox1
End If
End Sub
Bei dem Code wird der Wert aus der TextBox nach dem Betätigen der Entertaste in die nächste freie Zeile in Spalte A übertragen. Wenn der Wert nicht in Spalte A soll, dann musst Du in der Zeile
Cells(Range("A65536").End(xlUp).Offset(1, 0).Row, 1) = TextBox1
zunächst einmal die Zellebezeichnung A gegen den Buchstaben der Spalte in der der Wert übertragen werden soll ändern und die Spaltenindexzahl (ist die Zahl hinter dem Komma in der Klammer) ebenfalls. Die 1 steht für Spalte A, eine 2 würde für Spalte B stehen, eine 3 für C, eine 4 für D usw.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich.
Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 2 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von walcarre
Hallo,
Eigenschaft LinkedCell ist nicht vorhanden.
Es müsste eigentlich auch über Code machbar sein, oder ?
MeinCode sieht folgendermassen aus :
Private Sub TextBox1_Change()
Sheets("Données").Range("J6") = Me.TextBox1.Value
End Sub
Nachdem ich über die text box eine Wert in J6 eingegeben habe, soll der danach eingegebene wert automatisch in J7 eingefüllt werden usw.
Gruss
Eigenschaft LinkedCell ist nicht vorhanden.
Es müsste eigentlich auch über Code machbar sein, oder ?
MeinCode sieht folgendermassen aus :
Private Sub TextBox1_Change()
Sheets("Données").Range("J6") = Me.TextBox1.Value
End Sub
Nachdem ich über die text box eine Wert in J6 eingegeben habe, soll der danach eingegebene wert automatisch in J7 eingefüllt werden usw.
Gruss
Antwort 4 von walcarre
Hallo Coros,
Damit hast du mir weitergeholfen.
Handelt sich um einTabellenblatt. Erste Zelle ist J6. Nächste soll J7 sein usw.
Danke und Gruss,
walcarre
Damit hast du mir weitergeholfen.
Handelt sich um einTabellenblatt. Erste Zelle ist J6. Nächste soll J7 sein usw.
Danke und Gruss,
walcarre
Antwort 5 von coros
Hallo walcarre,
ich weiß jetzt nicht, ob Du die Aufgabe als erledigt ansiehst, oder ob Du nun die Zellen durchgegeben hast und auf eine neue Lösung wartest. Ich schreibe jetzt einfach mal den Code hier für Spalte J hin. Kopiere ihn in das VBA Projekt des Tabellenblattes mit der TextBox.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
ich weiß jetzt nicht, ob Du die Aufgabe als erledigt ansiehst, oder ob Du nun die Zellen durchgegeben hast und auf eine neue Lösung wartest. Ich schreibe jetzt einfach mal den Code hier für Spalte J hin. Kopiere ihn in das VBA Projekt des Tabellenblattes mit der TextBox.
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
Cells(Range("J65536").End(xlUp).Offset(1, 0).Row, 10) = TextBox1
End If
End Sub MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 6 von walcarre
Hallo Coros,
So ganz funktioniert das doch nicht wie gewollt.
Hätte wohl präziser mit meinen Angaben sein müssen.
Drum :
-die Textbox ist Teil einer Userform.
-die erste eingabe der Textbox soll an die Zelle J6 des Arbeitsblatts "Daten" eingegeben werden.
-die textbox soll nach der eingabe(enter) wieder geleert werden, um die nächste eingabe zu ermöglichen (textbox wird dabei aber nicht geschlossen).
-die nächste eingabe wird dann nach J7 geschrieben
-die nächste J8, usw
-nach allen eingaben textbox schliessen lit "Quit" Button
mfG,
walcarre
So ganz funktioniert das doch nicht wie gewollt.
Hätte wohl präziser mit meinen Angaben sein müssen.
Drum :
-die Textbox ist Teil einer Userform.
-die erste eingabe der Textbox soll an die Zelle J6 des Arbeitsblatts "Daten" eingegeben werden.
-die textbox soll nach der eingabe(enter) wieder geleert werden, um die nächste eingabe zu ermöglichen (textbox wird dabei aber nicht geschlossen).
-die nächste eingabe wird dann nach J7 geschrieben
-die nächste J8, usw
-nach allen eingaben textbox schliessen lit "Quit" Button
mfG,
walcarre
Antwort 7 von coros
Moin walcarre,
nachfolgenden Code in das VBA-Projekt der UserForm kopieren, dass das Textfeld enthält. Wenn der Name der TextBox anders ist als "TextBox1, muss in dem Code der Text entsprechend angepasst werden.
Der Code überträgt nach betätigen der Entertaste den eingegebenen Begriff in die erste freie Zeile in Spalte J. Wenn die erste freie Zeile kleiner der Zahl 6, dann wird der Begriff in Zeile 6 übertragen und danach in jede freie Zeile.
Ich hoffe, Du hast das so gemeint. Wenn nicht, dann melde Dich wieder.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
nachfolgenden Code in das VBA-Projekt der UserForm kopieren, dass das Textfeld enthält. Wenn der Name der TextBox anders ist als "TextBox1, muss in dem Code der Text entsprechend angepasst werden.
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then
If Range("J65536").End(xlUp).Offset(1, 0).Row < 6 Then
Cells(6, 10) = Me.TextBox1
Me.TextBox1 = ""
Else
Cells(Range("J65536").End(xlUp).Offset(1, 0).Row, 10) = Me.TextBox1
Me.TextBox1 = ""
End If
End If
End Sub
Der Code überträgt nach betätigen der Entertaste den eingegebenen Begriff in die erste freie Zeile in Spalte J. Wenn die erste freie Zeile kleiner der Zahl 6, dann wird der Begriff in Zeile 6 übertragen und danach in jede freie Zeile.
Ich hoffe, Du hast das so gemeint. Wenn nicht, dann melde Dich wieder.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 8 von walcarre
Hallo coros,
Beinahe alles perfekt.
Hier mein kompletter code :
Private Sub CommandButton1_Click() ActiveWorkbook.Sheets("Feuil1").Range("J6:J18").ClearContents
Me.TextBox1 = ""
Me.Label1.Caption = ""
Me.Label2.Caption = ""
Me.Label3.Caption = ""
Me.Label4.Caption = ""
Me.Label5.Caption = ""
frmtextboxDataTransfert.TextBox1.SetFocus
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
´
If KeyCode = vbKeyReturn Then
If Sheets("Feuil1").Range("J65536").End(xlUp).Offset(1, 0).Row < 6 Then
Cells(6, 10) = Me.TextBox1
Me.TextBox1 = ""
Else
Sheets("Feuil1").Cells(Range("J65536").End(xlUp).Offset(1, 0).Row, 10) = Me.TextBox1
Me.TextBox1 = ""
End If
End If
Me.Label1.Caption = Sheets("Feuil1").Range("J6")
Me.Label2.Caption = Sheets("Feuil1").Range("J7")
Me.Label3.Caption = Sheets("Feuil1").Range("J8")
Me.Label4.Caption = Sheets("Feuil1").Range("J9")
Me.Label5.Caption = Sheets("Feuil1").Range("J10")
End Sub
Private Sub UserForm_Click()
frmUserForm1.Show
Application.Run ("TextBox1_KeyDown")
End Sub
Zwei Probleme kriege ich nicht in den Griff :
1. Der Focus müsste nach jeder Eingabe in der Textbox bleiben, er springt aber zum button mit dem ich die labels und die zellen lösche.
2. Bei der Eingabe in die Textbox ist es derzeit möglich versehentlich mit enter eine zelle zu überspringen, also ohne wert zu lassen.
die möchte ich aber vermeiden.
Schon mal vielen Dank, hast mir bereits super weitergeholfen.
Gruss, walcarre
Beinahe alles perfekt.
Hier mein kompletter code :
Private Sub CommandButton1_Click() ActiveWorkbook.Sheets("Feuil1").Range("J6:J18").ClearContents
Me.TextBox1 = ""
Me.Label1.Caption = ""
Me.Label2.Caption = ""
Me.Label3.Caption = ""
Me.Label4.Caption = ""
Me.Label5.Caption = ""
frmtextboxDataTransfert.TextBox1.SetFocus
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
´
If KeyCode = vbKeyReturn Then
If Sheets("Feuil1").Range("J65536").End(xlUp).Offset(1, 0).Row < 6 Then
Cells(6, 10) = Me.TextBox1
Me.TextBox1 = ""
Else
Sheets("Feuil1").Cells(Range("J65536").End(xlUp).Offset(1, 0).Row, 10) = Me.TextBox1
Me.TextBox1 = ""
End If
End If
Me.Label1.Caption = Sheets("Feuil1").Range("J6")
Me.Label2.Caption = Sheets("Feuil1").Range("J7")
Me.Label3.Caption = Sheets("Feuil1").Range("J8")
Me.Label4.Caption = Sheets("Feuil1").Range("J9")
Me.Label5.Caption = Sheets("Feuil1").Range("J10")
End Sub
Private Sub UserForm_Click()
frmUserForm1.Show
Application.Run ("TextBox1_KeyDown")
End Sub
Zwei Probleme kriege ich nicht in den Griff :
1. Der Focus müsste nach jeder Eingabe in der Textbox bleiben, er springt aber zum button mit dem ich die labels und die zellen lösche.
2. Bei der Eingabe in die Textbox ist es derzeit möglich versehentlich mit enter eine zelle zu überspringen, also ohne wert zu lassen.
die möchte ich aber vermeiden.
Schon mal vielen Dank, hast mir bereits super weitergeholfen.
Gruss, walcarre
Antwort 9 von coros
Moin walcarre!
Zu Frage 1: Kopiere nachfolgende Anweisung in das VBA Projekt der UserForm, die das Textfeld beinhaltet.
Zu Frage 2: Tauschen die alte TextBox1_KeyDown-Anweisung gegen die nachfolgende aus.
Bei der Anweisung wird erst was in Spalte J übertragen, wenn in dem Textfeld etwas steht.
Ich hoffe, Du hast das so gemeint. Bei Fragen oder Änderungswünschen melde Dich wieder.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Zu Frage 1: Kopiere nachfolgende Anweisung in das VBA Projekt der UserForm, die das Textfeld beinhaltet.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = True
End Sub
Der Code löscht Dir den Inhalt und belässt den Focus auf TextBox1.Zu Frage 2: Tauschen die alte TextBox1_KeyDown-Anweisung gegen die nachfolgende aus.
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn And TextBox1 <> "" Then
If Sheets("Feuil1").Range("J65536").End(xlUp).Offset(1, 0).Row < 6 Then
Cells(6, 10) = Me.TextBox1
Me.TextBox1 = ""
Else
Sheets("Feuil1").Cells(Range("J65536").End(xlUp).Offset(1, 0).Row, 10) = Me.TextBox1
Me.TextBox1 = ""
End If
End If
Me.Label1.Caption = Sheets("Feuil1").Range("J6")
Me.Label2.Caption = Sheets("Feuil1").Range("J7")
Me.Label3.Caption = Sheets("Feuil1").Range("J8")
Me.Label4.Caption = Sheets("Feuil1").Range("J9")
Me.Label5.Caption = Sheets("Feuil1").Range("J10")
End Sub
Bei der Anweisung wird erst was in Spalte J übertragen, wenn in dem Textfeld etwas steht.
Ich hoffe, Du hast das so gemeint. Bei Fragen oder Änderungswünschen melde Dich wieder.
MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 10 von walcarre
Hallo Coros,
Das bringt mich nicht weiter.
Ich versuche also noch präziser zu sein.
Mit folgendem code lösche ich die Werte in der textbox und in den Zellen. Der Code funktioniert richtig.
Private Sub CommandButton1_Click() ActiveWorkbook.Sheets("Feuil1").Range("J6:J18").ClearContents
Me.TextBox1 = "" ...
Probleme gibt es im folgenden Teil (Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms ...)
1. Nach eingabe eines wertes und return springt der focus auf den command button der textbox und zellen löscht. Der Focus soll aber in der textbox bleiben.
2. falls irrtümlicherweise return gedrückt wird, ohne dass ein wert in die textbox eingegeben wurde, dann erhält die entsprechende zelle im excelblatt keinen wert.
die zellen in der kolonne "J" müssen aber alle einen wert erhalten. Es könnte also eine "messagebox" erscheinen die dazu auffordert eine wert einzugeben. Gleichzeitig muss die zellen.selektion eine stelle zurückgestellt werden um der leeren einen wert einzugeben. Alle vorangehenden werte sollen erhalten bleiben.
Gruss,
walcarre
Das bringt mich nicht weiter.
Ich versuche also noch präziser zu sein.
Mit folgendem code lösche ich die Werte in der textbox und in den Zellen. Der Code funktioniert richtig.
Private Sub CommandButton1_Click() ActiveWorkbook.Sheets("Feuil1").Range("J6:J18").ClearContents
Me.TextBox1 = "" ...
Probleme gibt es im folgenden Teil (Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms ...)
1. Nach eingabe eines wertes und return springt der focus auf den command button der textbox und zellen löscht. Der Focus soll aber in der textbox bleiben.
2. falls irrtümlicherweise return gedrückt wird, ohne dass ein wert in die textbox eingegeben wurde, dann erhält die entsprechende zelle im excelblatt keinen wert.
die zellen in der kolonne "J" müssen aber alle einen wert erhalten. Es könnte also eine "messagebox" erscheinen die dazu auffordert eine wert einzugeben. Gleichzeitig muss die zellen.selektion eine stelle zurückgestellt werden um der leeren einen wert einzugeben. Alle vorangehenden werte sollen erhalten bleiben.
Gruss,
walcarre
Antwort 11 von walcarre
Hallo Coros,
Läuft jetzt alles perfekt.
Die Exit Anweisung blockierte den Exit-Schaltknopf zum Verlassen des Formulars. Es reichte die tabStop Eigenschaft des Buttons auf False zu setzen.
Nochmals vielen Dank für deine Hilfe,
Gruss,
walcarre
Läuft jetzt alles perfekt.
Die Exit Anweisung blockierte den Exit-Schaltknopf zum Verlassen des Formulars. Es reichte die tabStop Eigenschaft des Buttons auf False zu setzen.
Nochmals vielen Dank für deine Hilfe,
Gruss,
walcarre

