26

当我在 VBA 中创建一个 msgbox 时,用户根本无法与文本交互。就我而言,我希望用户能够突出显示和复制文本。我在想更好的方法可能是添加一个将文本复制到剪贴板的按钮。有什么建议么?

4

5 回答 5

44

对于此代码:

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   
---------------------------
于 2012-08-30T04:39:42.180 回答
12

您可以使用输入框代替消息框

inputbox "Copy the below text", "Copy Text", "Text value"

输入框复制文本

在此处输入图像描述

于 2016-09-15T08:33:48.487 回答
11

如果您想要“可选择”的文本,请不要使用 MsgBox。使用自定义表单而不是标签使用文本框。然而...

在设计模式下更改文本框的这些属性。

  1. SpecialEffect - fmiSpecialEffectFlat
  2. BackStyle - 透明
  3. 锁定 - 真

然后使用此代码

Option Explicit

Private Sub UserForm_Initialize()
    Me.Caption = "Message Box"
    TextBox1.Text = "Hello World!"
End Sub

在此处输入图像描述

于 2012-08-30T06:41:36.400 回答
4

如果用户通常会复制整个消息,则可以使用 VBA 设置剪贴板文本。

或者使用输入框而不是 msgbox,因为用户可以从填充的值中复制。

于 2012-08-30T04:53:45.987 回答
4

您可以使用用户窗体制作自己的自定义消息框。这是一个基本的概念证明:一个带有一个文本框的用户表单(您可以从中选择和复制文本)。

在此处输入图像描述

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."
于 2012-08-30T06:40:02.893 回答