
做项目的时候,遇到这样的一个问题,需要在 Excel VBA 编程中动态的获取按钮所在 Cell 坐标。
感兴趣的朋友可以参考以下的代码:
‘计算Cmd所在的坐标
Function GetRC(ByVal Cmd As CommandButton)
Dim i, rX, cY As Integer
For i = 1 To 255
If Cells(1, i).Left < Cmd.Left And Cells(1, i + 1).Left > Cmd.Left Then
cY = i: Exit For
End If
Next
For i = 1 To 65535
If Cells(i, 1).Top < Cmd.Top And Cells(i + 1, 1).Top > Cmd.Top Then
rX = i: Exit For
End If
Next
GetRC = “Row:” & rX & “;Column:” & cY
End Function

最近在做项目的时候遇到了在 Excel VBA 代码中给 Sheet 中的单元格内输入公式的问题,自己 Google 了一下,发现 FormulaR1C1 这个函数,这个函数还是很强大的,自己简单了研究一下,为什么 Excel 能实现拖拽单元格时单元格中的公式能智能的根据位置而变换?答案就是这个函数。

这几天,我们 Team 又有一个新的流程上线,所以制作一个新版工作 Report 的 Excel 文档的任务又落到了我头上,以前利用 Excel VBA 写过很多类似的文档,所以这个任务的完成还算是轻车熟路,基本上把以前写的 Daily Report 文档拿过来修改一下就 OK 啦。
在代码的编写中,我想到了新的问题,因为我编写的文档需要大量的按钮控件,点击按钮Excel完成的动作大致相同,以前我只是把相同的问题,归类到一个 Sub 中去,然后再不同的按钮的Click函数中调用,其实这样做只是提高了代码的可修改性和重用性,学过设计模式的朋友应该了解,这样做的目的无非是如果按钮的响应动作发生变化,我只需要修改 Sub 中的代码即可,但是即便是这样,我还需要在制作新的 Excel 文档时手动生成大量的按钮Click事件响应函数,使用“海量”的”CTRL+V” 操作,于是懒惰的我开始思考有没有更简单的方法,最开始的时候我还比较享受使用“海量”的”CTRL+V” 操作,因为毕竟100个按钮,如果0.5秒操作一次的话,一分钟就搞定了,看来懒人的劳动是必须要量化的,呵呵。不过,实际问题是,在我的代码中每个 Click 事件的响应函数中需要动态获取按钮本身的Cell位置,也就是所以我需要修改100个的函数,这样的工作量太大了,所以我开始思考: Excel VBA中是否具有 Java 中的反射机制?
Categories
- 信息世界 | IT (95)
- Certification (1)
- Cloud Computing (1)
- Database (16)
- Google (10)
- Hardware (2)
- J2EE (4)
- Network (19)
- OS (18)
- Programming (11)
- Virtualization (1)
- Webmaster (11)
- 数码先锋 | Digital (17)
- 时事评论 | Event (5)
- 时光飞驰 | News (2)
- 杂七杂八 | Mix (2)
- 流金岁月 | Life (8)
- 游戏志 | Game (13)
- 看电影 | Movie (10)
- 红魔拥趸 | ManUtd (5)
- 读书频道 | Reading (1)
- 音乐无限 | Music (4)
- 信息世界 | IT (95)
Twitter
- I'm at 大连国美电器胜利新活馆 (大连市, 辽宁省) http://t.co/f7pxcNfg 17 小时前
- I'm at Xinghai Square | 星海广场 (Dalian, China) http://t.co/gKNqq2qV 24 小时前
- I'm at 壹品星海 (Dalian, China) http://t.co/o7SCCIrG 24 小时前
- 晚上和以前的同事喝了点酒,准备睡觉了,希望明天能把公司的电脑修好,没有电脑办公还真不方便,不知道明天印度那边有没有培训的消息。 2012-05-16
- 非常值得读的一本书! http://t.co/lV8ulDnV 2012-05-16
- I'm at 大连软件园15号楼 (大连市, 辽宁省) http://t.co/03DYYUKY 2012-05-16
- @yamiugly 好奇你做的是什么工作? 2012-05-16
- I'm at 壹品星海 (Dalian, China) http://t.co/frkQvlIn 2012-05-15
- I just ousted @fndhrt as the mayor of 大连软件园15号楼 on @foursquare! http://t.co/yn7fSLY6 2012-05-15
- I'm at 大连软件园15号楼 (大连市, 辽宁省) http://t.co/KH2m2Z4R 2012-05-15
- @terrysosi_chan 小日子过的太充实了! 2012-05-15
- RT @GossipSama: 玩diablo 2的时候我23岁,玩diablo 3的时候我34岁。暴雪是要等我不再2了才出3是么?那是不是要45岁才玩到4? 2012-05-15
- I'm at 中山广场 Zhongshan Circus (大连, 中国) http://t.co/fiD6vqHS 2012-05-14
- 英超还真他妈的好看。昨晚90分钟的比赛,跟坐过山车一样,如果不看直播,是体会不到这种刺激的,呵呵,英超第20年,今年的冠军真的很有戏剧性,恭喜曼城,明年的曼联面对的局势更难,曼城还会加大投入的,看看曼城现在的阵容,明年再买几个强援,大耳朵杯指日可待! 2012-05-14
- @Fatal1tyV 怎么弄? 2012-05-14
Latest Comments
Foursquare Checkins
标签
