ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2949|回复: 11

[求助] 如何获得剪切或复制位置的单元格对象,或地址?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-11-2 09:50 | 显示全部楼层 |阅读模式
$X3(1C9%YSE)N%EGPHKJ(7C.png 如图,我如何得到虚线框的单元格对象,或者它的对应地址?

TA的精华主题

TA的得分主题

发表于 2015-11-2 10:14 | 显示全部楼层
手動複製時,必須先選取單元格範圍。選取的動作會觸發工作表的SelectionChange事件。在該事件裡,Target就代表被選取單元格範圍對象;亦即Target代表選取的單元格,而Target.Address則會傳回該單元格的位址。

TA的精华主题

TA的得分主题

发表于 2015-11-2 10:22 | 显示全部楼层
上传附件并描述问题是一个很好的习惯,如果你选中了它,那自然就是selection.address

TA的精华主题

TA的得分主题

发表于 2015-11-2 10:34 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-2 11:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 yfzdb 于 2015-11-2 11:24 编辑

感谢楼上各位{:soso_e183:}
是这样的,我要实时获得复制或剪切的对象,用于其他操作。利用 Target 或  selection 获得的对象,属于间接方式,有以下两个问题。
因为,复制或剪切操作在选择(也就是选择事件)之后,所以,很难对复制或剪切对象进行精准定位,所以下面两种方法, 都不能达到理想要求。
所以,最好的办法是:是否有一种能直接得到复制或剪切对象或地址的方法?
问题如下:
1、 如果在重复两次及两次以上复制或剪切操作时,只能获得第一次剪切或复制的单元格对象 。         
  If Globals.ThisAddIn.Application.CutCopyMode = 0  Then
             nRanged = Target
             nCopyRange = Nothing
        ElseIf Not nRanged Is Nothing Then
            nCopyRange = nRanged
        End If
2、 获得的对象都是上一次选择的单元格,不能固定在复制或剪切的单元格。      
        If Globals.ThisAddIn.Application.CutCopyMode = 0  Then
            nCopyRange = Nothing
        ElseIf Not nRanged Is Nothing Then
            nCopyRange = nRanged
        End If
        nRanged = Target





TA的精华主题

TA的得分主题

发表于 2015-11-2 11:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
yfzdb 发表于 2015-11-2 11:08
感谢楼上各位
是这样的,我要实时获得复制或剪切的对象,用于其他操作。利用 Target 或  sel ...

1、是这样的,我要实时获得复制或剪切的对象,用于其他操作,其他什么操作请明示
2、请上传完整代码或者附件,并说明问题
3、是否有一种能直接得到复制或剪切对象或地址的方法    没有听懂,你既然复制或剪切了,对象或地址不就用了嘛,可以用dataobject把数据放在剪切板上

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-2 11:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 yfzdb 于 2015-11-2 17:43 编辑
huang1314wei 发表于 2015-11-2 11:23
1、是这样的,我要实时获得复制或剪切的对象,用于其他操作,其他什么操作请明示
2、请上传完整代码或者 ...

1、要实现的目的是跨行粘贴,如图,把虚线内的内容复制到L17:L91可见的的位置 AHE$]@~}D28I44ODLG5ZGS3.png
2、 相关问题已经明确,主要的代码,也已上传了。
3.1、dataobject  获得的是一串文本,不能获得一组数据,很难对 dataobject 获得的内容进行分割 ,或者说,能有对 dataobject 对象加工成数组形式结果的方法,也行。
3.2 “ 你既然复制或剪切了,对象或地址不就有了嘛”。关于这一点,要考虑到实际应用问题,用户可能会进行多次剪切操作,或者剪切后进行多次选择操作,然后才进行“仅可见粘贴”操作时,你会发现,很难找到实时剪切对象了。。 如果剪切了,又马上进行 “仅可见粘贴”操作,是没有问题的。
3.3“是否有一种能直接得到复制或剪切对象或地址的方法”  ,比如,会不会有一种,Application.CopyRange  这样的对象, 代表虚线框位置的对象。
   


TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-2 14:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-11-4 09:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Private strAdd As String

Sub auto_open()
    Application.CommandBars("cell").FindControl(ID:=19).OnAction = "myCopy"
End Sub

Sub auto_close()
    Application.CommandBars("cell").FindControl(ID:=19).OnAction = ""
End Sub

Sub myCopy()
    strAdd = Application.Selection.Address
    Application.StatusBar = "你选择的单元格是:" & strAdd
    Application.SendKeys "^c"
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-11-7 16:07 | 显示全部楼层
wxhnr 发表于 2015-11-4 09:59
Private strAdd As String

Sub auto_open()

感谢wxhnr大神。这样确实是可以捕捉到通过右键进行的复制操作。。很不错的思路。
不过还是有个小问题,通过快捷键 ctrl+c进行的操作则捕捉不到。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-19 09:11 , Processed in 0.038352 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表