Предположим, у меня есть следующий код в пользовательской форме EXCEL VBA:
Private Sub TextBox_Change()
TextBox.Value = UCase(TextBox.Value)
OtherText.Value = "FOO " & TextBox.value & " BAR"
End Sub
Он заставляет текстовое поле всегда вводиться в верхнем регистре и хорошо работает , когда пользователи вводят с конца .
Однако, скажем, мне дали текст "HELLO WORLD"
, и я хотел вставить "CRUEL "
между (набранный вручную пользователями), как только я наберу C
,курсор переместился бы после D
, и конечный результат стал бы "HELLO CWORLDRUEL "
(если бы я печатал вслепую).
Положение курсора не изменилось бы, если бы у меня была блокировка заглавными буквами, но это противоречит целикод ... и с символом нижнего регистра он всегда пинает курсор до конца.
Есть ли способ сохранить позицию курсора для этого типа принудительного изменения регистра?
Я рассматривал возможность использования метода _Exit()
, но я хочу сохранить оба значения OtherText
и TextBox
в верхнем регистре.В противном случае OtherText
будет все в верхнем регистре, в то время как TextBox
все еще в нижнем регистре до выполнения _Exit()
, и это выглядит ... нежелательно.