Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo McArthur,
Deine TextBox mit dem KeyDown-Event gehört zu den ActiveX-Steuerelementen.
Ein Rechteck gehört zu den Shapes. Ein Shape hat jedoch kein KeyDown-Ereignis
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• McArthur1
Registriert seit: 12.03.2017
Version(en): 2016
Hallo,
Danke shauan und WillWissen für eure Hilfe, ihr hilft mir wirklich weiter :).
Meine Frage wäre jetzt noch ob Ich konkret mit einem Rechteck/Shape genau das selbe bewirken könnte, wie mit dem Textfeld. Das bedeutet, wenn Ich auf das Feld klicke kann Ich irgendeinen Begriff eingeben und dieser wird dann automatisch in eine von mir festgelegte Zelle übertragen. Wenn Ich dann einen neuen Begriff eingebe, soll der alte aus der Zelle, einfach überschrieben werden. Die Eingabe sollte dabei durch die Enter Taste beendet werden.
Außerdem bräuchte Ich nochmals einen ähnlichen Code, bei welchem der alte Begriff nicht ersetzt werden, sondern der neue Begriff, eine Zeile nach unten verschoben werden soll.
Ich hoffe Ihr könntet mir vielleicht hierbei noch weiter helfen.
Viele Grüße
McArthur1
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo McArthur,
Zitat:Meine Frage wäre jetzt noch ob Ich konkret mit einem Rechteck/Shape genau das selbe bewirken könnte, wie mit dem Textfeld. Das bedeutet, wenn Ich auf das Feld klicke kann Ich irgendeinen Begriff eingeben und dieser wird dann automatisch in eine von mir festgelegte Zelle übertragen.
hab ich Dir gerade beantwortet.
Zitat:Ein Shape hat jedoch kein KeyDown-Ereignis
Wenn man dem Rechteck ein Klick-Ereignis zuweist, kannst Du nicht mehr per Klick in den Eingabemodus des Rechteckes wechseln. Das geht dann nur noch über das Kontextmenü.
Alternativ könnte man beim ausgeführten Makro eine Inputbox erscheinen lassen, wo Du den Text eingeben kannst und dann wird er übertragen, wenn Du auf OK drückst.
Im Prinzip so:
Zitat:Sub Rechteck1_Klicken()
'Code in Modul
'Variablendeklaration String
Dim strText$
'Aufruf der Inputbox
strText = InputBox("Neuer Text:", "Eingabe des Textes")
'Wenn etwas eingegeben wurde, dann
If strText <> "" Then
'Text in erste freie Zelle der Spalte A = 1 uebertragen
Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = strText
'Text in Rechteck 1 uebertragen
Tabelle1.Shapes("Rectangle 1").TextEffect.Text = strText
'Ende Wenn etwas eingegeben wurde, dann
End If
End Sub
Du musst dann nur schauen, ob das Ding Rechteck 1 heißt und den englischen Begriff dafür nehmen. Man könnte da auch noch was mit Application.Caller verbessern ...
Zitat:sondern der neue Begriff, eine Zeile nach unten verschoben werden soll
Das hatten wir auch schon. Das ist aus diesem Code
Zitat:Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = Tabelle1.TextBox1.Text
End Sub
der Teil
Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = ...
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 12.03.2017
Version(en): 2016
Hallo shauan,
tut mir Leid, dass Ich erst jetzt wieder schreibe. Ich habe mich jetzt dafür entschieden mit Textfeldern zu arbeiten. Könntest du mir vielleicht noch helfen und mir sagen, wie Ich deinen Code ändern müsste, damit der Begriff nicht immer in die nächste unterliegende Zeile übernommen wird, sondern genau in das Feld, in welches Ich den Begriff haben will?:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = Tabelle1.TextBox1.Text
End Sub
Viele Grüße
McArthur1
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
02.04.2017, 21:50
(Dieser Beitrag wurde zuletzt bearbeitet: 03.04.2017, 10:26 von Rabe.
Bearbeitungsgrund: Rabge => Range
)
Hallöchen,
das Ziel wird hier definiert:
Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value
Wenn Du es an immer gleiche Stelle haben willst, dann z.B. so:
Range("A1").Value
. \\\|/// Hoffe, geholfen zu haben.
( ô ô ) Grüße, André aus G in T
ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• McArthur1
Registriert seit: 12.03.2017
Version(en): 2016
Hallo,
Danke für deine Hilfe ;D, alles klappt so weit
Viele Grüße
McArthur1