BeforeDragOver
和BeforeDropOrPaste
事件到底是如何工作的?
我的工作簿上有一个图像ActiveX控件,上面有以下代码:
Private Sub Image1_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As MSForms.fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
Range("A1").Value = "test1"
End Sub
Private Sub Image1_BeforeDropOrPaste(ByVal Cancel As MSForms.ReturnBoolean, ByVal Action As MSForms.fmAction, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
Range("A1").Value = "test2"
End Sub
当我试图拖放它的时候,什么都没发生。
发布于 2018-08-14 04:36:06
迟到了,希望它能帮到别人
学分
对史考特P的信贷(来源:Www.vbaExpress s.com/..。)
在这里也可以找到相同的代码:Github.com/OfficeDev/VBA-content/.
微小变化
MSForms.
前面添加DataObjectInteger
改为Long
将以下代码和两个列表框添加到UserForm中:
Option Explicit
Private Sub ListBox2_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As Long, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
Cancel = True
Effect = 1
End Sub
Private Sub ListBox2_BeforeDropOrPaste(ByVal Cancel As MSForms.ReturnBoolean, ByVal Action As Long, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
Cancel = True
Effect = 1
ListBox2.AddItem Data.GetText
End Sub
Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim MyDataObject As MSForms.DataObject
If Button = 1 Then
Set MyDataObject = New MSForms.DataObject
Dim Effect As Long
MyDataObject.SetText ListBox1.value
Effect = MyDataObject.StartDrag
End If
End Sub
Private Sub UserForm_Initialize()
Dim i As Long
For i = 1 To 10
ListBox1.AddItem "Choice " & (ListBox1.ListCount + 1)
Next i
End Sub
https://stackoverflow.com/questions/47415259
复制相似问题