作者:绿色风
分类:
时间:2022-08-17
浏览:163
楼主 kevinchengcw |
Q: 如何用vba代码对所选单元格区域内最大值单元格进行选定? A: 代码如下:
- Sub test()
- Dim Rng As Range, mMax#, R As Range, RS As Range
- On Error GoTo Skip '设置出错跳转
- Set Rng = Application.InputBox("请用鼠标选择要挑选最大值的单元格范围:", "选择区域", , , , , , 8) '选择要查找的单元格范围
- mMax = WorksheetFunction.Max(Rng) '提取出最大值
- Set RS = Rng.Find(mMax, LookIn:=xlValues, LookAt:=xlWhole) '查找第一个位置
- Set R = RS '储存找到的位置
- Do
- Set RS = Rng.FindNext(RS) '查找下一个
- If RS.Address <> Rng.Find(mMax, LookIn:=xlValues, LookAt:=xlWhole) Then Set R = Union(R, RS) '如果不是原有单元格则添加到找到的区域
- Loop While RS.Address <> Rng.Find(mMax, LookIn:=xlValues, LookAt:=xlWhole).Address '如果未回到第一个位置则继续循环
- R.Select '选定找到的单元格位置
- Exit Sub '正常退出程序
- Skip: '出错时跳到这里退出
- End Sub
|
2楼 0Mouse |
代码考虑了最大值可能有多个的情况,也设置了相应的消错语句,考虑的蛮周到的。 貌似If RS.Address <> Rng.Find(mMax, LookIn:=xlValues, LookAt:=xlWhole) Then这一句不写也可以,因为已经设置了何时中止循环,就算R和RS出现一次相同,Union(R, RS)得到的也是正确的结果。另外,经测试,代码中的出错语句可以避免选取空白单元格区域发生的错误,但是不能避免单击inputbox的“取消”按钮出现错误提示,所以如果能再加上处理这一错误的语句那就更完美了。 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一