Когда я создаю msgbox в VBA, пользователь вообще не может взаимодействовать с текстом. В моем случае я хочу, чтобы пользователь мог выделить и скопировать текст. Я думаю, что лучший способ сделать это может заключаться в том, чтобы добавить кнопку, которая копирует текст в буфер обмена. Любые предложения?
Выбираемый текст в окне сообщений VBA
Ответ 1
Для этого кода:
msgbox "Does Control+C work on a lowly, old message box?"
вы можете нажать ctrl + c, открыть блокнот, ctrl + v, и вы получите следующее:
---------------------------
Microsoft Excel
---------------------------
Does Control+C work on a lowly, old message box?
---------------------------
OK
---------------------------
Ответ 2
Если вы хотите, чтобы текст был "выбираемым", не используйте MsgBox. Используйте пользовательскую форму, а вместо ярлыка используйте текстовое поле. Однако...
Измените эти свойства текстового поля в режиме разработки.
- SpecialEffect - fmiSpecialEffectFlat
- BackStyle - Tranparent
- Заблокировано - True
И затем используйте этот код
Option Explicit
Private Sub UserForm_Initialize()
Me.Caption = "Message Box"
TextBox1.Text = "Hello World!"
End Sub
Ответ 3
Вы можете использовать VBA для установки текста буфера обмена, если пользователь обычно копирует все сообщение.
Или используйте поле ввода вместо msgbox, так как пользователь может скопировать из заполненного значения.
Ответ 4
Вы можете создать собственное окно сообщений с помощью UserForm. Здесь рудиментарное доказательство концепции: пользовательская форма с одним текстовым полем (из которого вы можете выбрать и скопировать текст).
Sub MyMsg(msg As String)
With MsgUserForm ' this is the name I gave to the userform
.TextBox1.Text = msg
.Show
End With
End Sub
Использование:
MyMsg "General failure reading hard drive."
Ответ 5
Вы можете использовать поле ввода вместо окна сообщения
inputbox "Copy the below text", "Copy Text", "Text value"
текст с текстом ввода