如何在Excel中返回行进中的ant的位置?

我知道Application.CutCopyMode,但只返回CutCopyMode(False,xlCopy或xlCut)的状态。

如何使用VBA返回Excel中当前复制范围的地址? 我不需要当前select的范围(这是Application.Selection.Address)。 我需要周围的移动边界(行军ant)的细胞范围的地址。

换句话说,如果你select了一个单元格范围,点击CTRL + C,然后将select移到另一个单元格,我需要用户点击CTRL + C时select的单元格的地址。

谢谢!

据我所知,你不能用vba做到这一点。 但是,您可以编写自己的副本,并将源存储在全局variables中。

像这样的东西:

Option Explicit Dim myClipboard As Range Public Sub toClipboard(Optional source As Range = Nothing) If source Is Nothing Then Set source = Selection source.Copy Set myClipboard = source End Sub 

当您复制范围时,地址将与其他格式一起复制到剪贴板。 您可以使用剪贴板查看器应用程序来检查。 所以如果你需要复制的范围,从剪贴板中获取。 这将是> $ A2:$ B5或类似的东西

唯一可以这样做的方法是跟踪用全局variablesselect的最后一个范围,然后等待,直到您认为复制操作完成。 不幸的是,这不容易。

以下是一个有两个问题的快速尝试;

  1. 如果您复制两次相同的数据,则不会更新
  2. 如果复制或粘贴从其他应用程序触发,结果可能会有所不同。

这是追踪事实并非真正存在的最后希望之一。 希望这可以帮助。

 ''# Add a reference to : FM20.dll or Microsoft Forms 2.0 ''# Some more details at http://www.cpearson.com/excel/Clipboard.aspx Option Explicit Dim pSelSheet As String Dim pSelRange As String Dim gCopySheet As String Dim gCopyRange As String Dim gCount As Long Dim prevCBText As String Dim DataObj As New MSForms.DataObject Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _ ByVal Target As Excel.Range) CopyTest pSelSheet = Sh.Name pSelRange = Target.Address ''# This is only so you can see it working gCount = gCount + 1 application.StatusBar = gCopySheet & ":" & gCopyRange & ", Count: " & gCount End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range) CopyTest ''# You may need to call CopyTest from other events as well. ''# This is only so you can see it working gCount = gCount + 1 application.StatusBar = gCopySheet & ":" & gCopyRange & ", Count: " & gCount End Sub Sub CopyTest() Dim curCBText As String Dim r As Range DataObj.GetFromClipboard On Error GoTo NoCBData curCBText = DataObj.GetText On Error Resume Next ''# Really need to test the current cells values ''# and compare as well. If identical may have to ''# update the gCopyRange etc. If curCBText <> prevCBText Then gCopySheet = pSelSheet gCopyRange = pSelRange prevCBText = curCBText End If Exit Sub NoCBData: gCopySheet = "" gCopyRange = "" prevCBText = "" End Sub 

哦,原谅那些奇怪的评论“#他们只是在那里帮助SO的语法突出显示。