在MS Excel中侦听鼠标(拖放)事件

时间:2012-05-09 16:47:36

标签: excel events vba excel-vba drag-and-drop

有没有办法识别MS Excel工作表上的拖放事件?我正在寻找的是能够在将文件(例如从桌面)拖放到MS Excel工作表中的单元格(并将文件的名称插入单元格中)时收听事件。

使用Excel宏可以实现这一点吗?

1 个答案:

答案 0 :(得分:1)

我自己不确定如何执行任务 - 但是,似乎有人已经尝试解决这个问题。我从vbadud.blogspot

中提取了此代码
' Place file on textbox to display filename.
Private Sub TextBox1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)

' Declare variable(s).
Dim eventvar1 As Integer '* Files Counter

' If an error occurs, go to the Error Handler.
On Error GoTo Error_Handle1
'Drag N' Drop Event Handler
If Data.GetFormat(vbCFFiles) = True Then
eventvar1 = Data.Files.Count
    If eventvar1 = 1 Then
        If InStr(1, LCase$(Data.Files(eventvar1)), ".xls") Then
            txtExcel.Text = Data.Files(eventvar1)
        End If
    End If
End If

   ' Error Handler
    Error_Handle1:
        If Err <> 0 Then
            Debug.Assert Err = 0
            Err.Clear
        End If
    End Sub

如果将文件放入文本框,代码将发布该文件的名称。您可以使用方法,函数甚至单独的子例程来使用已放入文本框的文本。

例如,检查从文本框到单元格复制文本的SO article,您可以使用此代码将文本输入Excel工作表的范围内:

Range("A2").End(xlDown).Offset(1, 0).Value = TextBox1.Text 

从那里开始,无论是将子程序绑定到另一个宏来实现一种自动化形式,还是另一种形式,根据需要拖放,或者对你来说都是有意义的。

如果有帮助,请告诉我,

〜JOL