在GetText之后从VBA DataObject对象获取字符串

时间:2019-05-10 23:03:14

标签: excel vba userform

我正在尝试对从UserForm Excel Visual Basic VBA中的TextBox接收到的文本数据进行一些字符串处理(修剪和拆分)。但是我无法从存储在Microsoft Form 2.0 DataObject中的用户剪贴板中获取String / text数据。

我尝试过     Dim s As String = CType(strPaste, String) 但它表示声明的预期结尾。

如果我只做     s = CType(strPaste, String) 那就是语法错误。

我也仔细阅读了Microsoft Forms文档,但是没有与DataObject相关的方法列表。

这就是我所拥有的。

Dim dataObj As MSForms.DataObject
Set dataObj = New MSForms.DataObject
dataObj.GetFromClipboard
strPaste = dataObj.GetText()

strPaste的变量类型是0,它是一个对象。我希望它是一个字符串。

1 个答案:

答案 0 :(得分:1)

如果使用早期绑定,则可以在对象浏览器中查看方法。

这里有一些将东西放到剪贴板上并从剪贴板上读取的例子。

Option Explicit
Sub foo()
    Dim dataObj As MSForms.DataObject
    Dim getStr As String
    Const putStr As String = "This went to the clipboard"

    Set dataObj = New MSForms.DataObject
    dataObj.SetText putStr
    dataObj.PutInClipboard

    dataObj.GetFromClipboard
    getStr = dataObj.GetText

    MsgBox getStr
End Sub

以及通过普通复制操作放置在剪贴板上的东西:

Sub foo2()
    Dim dataObj As MSForms.DataObject
    Dim R As Range
    Dim getStr As String

Set R = Cells(1, 1)
With R
    .Value = "abcxyz^123"
    .Copy
End With

Set dataObj = New MSForms.DataObject

dataObj.GetFromClipboard
getStr = dataObj.GetText

MsgBox getStr
End Sub

您可能还会发现Microsoft Forms Reference的价值,以及指向示例的链接,这些示例显示了使用这些方法以及与文本框进行交互的其他示例。