Я работаю над программой с пользовательской формой со многими текстовыми полями:
![enter image description here](https://i.stack.imgur.com/bvzz3.png)
(надеюсь, все понимают по-немецки)
Событие, когда пользователь пытается что-то набрать в желтых текстовых полях, должно вызвать появление новой пользовательской формы:
Эта пользовательская форма содержит увеличенное текстовое поле с большим пространством для ввода большого текста. После нажатия кнопки «Speichern» вторая пользовательская форма выгружается, и текст появляется в исходном текстовом поле в первой пользовательской форме. Поэтому у меня есть модуль класса для вызова события Keypress, которое вызывает вторую пользовательскую форму.
Моя проблема : я хочу, чтобы первая нажатая клавиша, которая вызывает событие, была видна во втором текстовом поле пользовательской формы.
Пример: Я выбираю третье желтое текстовое поле. Я хочу ввести «Это комментарий». При нажатии на первую клавишу «T» новая пользовательская форма открывается уже с буквой «T» в текстовом поле, поэтому я могу продолжать писать оставшуюся часть текста и не вводить снова букву «T».
До сих пор: У меня есть рабочий код для запуска события нажатием клавиши. Поэтому я работаю с модулем класса и подпрограммой инициализации пользовательской формы. К сожалению, текстовое поле не показывает уже первый ключ, который вызвал событие.
Модуль моего класса:
Public WithEvents TextBoxEvents As msforms.TextBox
'referring to all textboxes(addmaterialuserform) ~~> restriction in Addmaterialuserform / Userform-Initialize Sub
Private Sub TextBoxEvents_KeyPress(ByVal Keyascii As msforms.ReturnInteger)
'Keypress-event start by clicking any button on keyboard
'for more information https://docs.microsoft.com/de-de/office/vba/api/access.textbox.keypress
Keyascii = 0 'return value ~~> 0 for no return value
UserForm2.CommentBoxUserform.Value = TextBoxEvents.Value 'if small textbox already owns a string it'll be showed in userform (big) textbox
DataBaseSheet.Cells(3, 3).Value = TextBoxEvents.Tag 'saves tag (name) of active comment box to fill up later with string of big textbox
userform2.Show
End Sub
Userform Sub:
Private Sub UserForm_Initialize()
'all comment-textboxes have same properties to find in TextBoxClass
'when pressed any keyboard button the addcommentuserform will be opened to have a much bigger textbox to enter comment
Dim myTBs() As New TextBoxClass 'reference to TextBoxclass for Userform-initialize sub
Dim i As Integer
Dim objControl As Control
For Each objControl In Me.Controls
If TypeOf objControl Is msforms.TextBox Then
Select Case objControl.Name 'selects only comment-textboxes by referring to their name
Case "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "C11", "C12", "C13", "C14", "C15", "C16" '<~~ Include only these"
i = i + 1
ReDim Preserve myTBs(1 To i) 'call textboxclass
Set myTBs(i).TextBoxEvents = objControl
End Select
End If
Next objControl
Set objControl = Nothing
End Sub