【问题标题】:Get String from VBA DataObject object after GetTextGetText 后从 VBA DataObject 对象中获取字符串
【发布时间】:2019-05-10 23:03:13
【问题描述】:

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

我试过了 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 的 Variant Type 为 0,即对象。我希望它是一个字符串。

【问题讨论】:

  • 那个 VB.NET 不是 VBA。

标签: excel vba userform


【解决方案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,以及指向示例的链接,其中显示了使用这些方法以及与文本框交互的其他示例。

【讨论】:

  • 谢谢,是的,我应该使用 dataObj.GetText 而不是 dataObj.GetText()!
猜你喜欢
  • 1970-01-01
  • 2013-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-04
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多