VBA消息框中的可选文本

时间:2012-08-30 01:35:49

标签: vba user-interface excel-vba excel

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

5 个答案:

答案 0 :(得分:37)

对于此代码:

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   
---------------------------

答案 1 :(得分:9)

如果您想要“可选择”的文本,请不要使用MsgBox。 Use a Custom form而不是标签使用文本框。然而...

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

  1. SpecialEffect - fmiSpecialEffectFlat
  2. BackStyle - 透明
  3. 已锁定 - 正确
  4. 然后使用此代码

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

    enter image description here

答案 2 :(得分:6)

您可以使用输入框而不是消息框

private  void RegisterESBMessageHandlers(ContainerBuilder builder)
{
    ...40 of them handlers
    builder.RegisterType<EsbHandlers.NewPartyDocumentMessageHandler>().AsSelf();
    builder.RegisterType<EsbHandlers.NewProcessMessageHandler>().AsSelf();

}

输入框复制文字

enter image description here

答案 3 :(得分:4)

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

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

答案 4 :(得分:4)

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

enter image description here

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."