mik*_*inz 6 clipboard vba excel-2003 clipboarddata
如果剪贴板包含 Excel 工作表范围,则可以使用 DataObject 对象访问该范围的数据
您还可以找到该数据的实际来源范围(即工作表、行和列)吗?
或者,您能否找到用虚线轮廓边框(不是选定范围)表示的上次复制范围?
最好使用 Excel 2003 VBA
不直接,不 - 剪贴板对象似乎只包含单元格的值(尽管 Excel 显然以某种方式记住了边框):
Sub testClipborard()
Dim test As String
Dim clipboard As MSForms.DataObject
Set clipboard = New MSForms.DataObject
clipboard.GetFromClipboard
test = clipboard.GetText
MsgBox (test)
End Sub
Run Code Online (Sandbox Code Playgroud)
请注意,您需要引用 Microsoft Forms 2.0 库才能运行此程序(如果单元格中没有值,它也会失败)。
话虽这么说,您可以尝试如下操作 - 将其添加到 VBA 编辑器中的模块中。
Public NewRange As String
Public OldRange As String
Public SaveRange As String
Public ChangeRange As Boolean
Run Code Online (Sandbox Code Playgroud)
并在工作表对象中使用以下内容
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
'save previous selection
OldRange = NewRange
'get current selection
NewRange = Selection.Address
'check if copy mode has been turned off
If Application.CutCopyMode = False Then
ChangeRange = False
End If
'if copy mode has been turned on, save Old Range
If Application.CutCopyMode = 1 And ChangeRange = False Then
'boolean to hold "SaveRange" address til next copy/paste operation
ChangeRange = True
'Save last clipboard contents range address
SaveRange = OldRange
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
它看起来有效,但是,它也可能很容易出现不同的错误,因为它试图解决剪贴板的问题。 http://www.ozgrid.com/forum/showthread.php?t=66773