我在两个不同的实例中打开了两个不同的Excel工作簿bk1
和bk2
,这样我就可以在每个显示器上打开一个。
我想要一个bk1
的事件处理程序,这样当我双击工作表s1
中的一列时,我会将该列中的所有值复制到剪贴板,这样我就可以点击在bk2
上,将这些值粘贴到一列中。
我在bk1
的代码模块s1
中有以下事件处理程序:
Private Sub worksheet_beforedoubleclick(ByVal target As Range, cancel As Boolean)
Dim column As Long
Dim rng As Range
column = target.column
Set rng = Range(Cells(2, column), Cells(3233, column))
rng.Copy
End Sub
双击时会触发此事件,并为rng
指定正确的范围,但是当我尝试粘贴值时,即使我尝试粘贴值,粘贴选项也不可用bk1
中的其他地方。为什么不将范围复制到剪贴板?
请注意,如果我将最后一行更改为:
rng.Copy Sheets("sheet3").Range("a2")
粘贴成功发生。所以问题是将数据传送到剪贴板。
答案 0 :(得分:1)
首先我认为可能在单元格内双击内容清除excel剪贴板
然后我在Excel中打开剪贴板,看看是否正在将所选数据复制到剪贴板,方法是单击如下所示的箭头
原来数据被复制到剪贴板但由于某种原因它不会粘贴数据
所以,我终于得到了clip board object with some help
Private Sub worksheet_beforedoubleclick(ByVal target As Range, cancel As Boolean)
Dim column As Long
column = target.column
Set rng = Range(Cells(2, column), Cells(3233, column))
rng.Copy
Dim Clip As Object
Set Clip = CreateObject( _
"new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
Clip.GetFromClipboard
Range("B2").PasteSpecial xlValues
End Sub
随意修改Clip对象以供您使用
答案 1 :(得分:1)
双击查看将cutcopymode切换为false