快速获取InputBox选中区域的单个单元格引用地址
在VBA中使用InputBox
方法可以让用户选择单元格区域,交互体验和输入公式参数基本上相同,其返回值为Range对象。语法格式参见:
InputBox微软帮助文档
如果用户选择了多个区域,如下图中黄色区域所示,那么使用Range对象的Address
属性获取单元格引用地址时,结果为$B$5:$B$7,$B$13,$B$19
。
如果希望得到每个单元格的单独地址($B$5,$B$6,$B$7,$B$13,$B$19
),那么可以使用VBA处理一下。
示例代码如下。
Sub demo()Dim arrAddress(), rngSelectSet rngSelect = Application.InputBox("Select Range", Type:=8)If Not rngSelect Is Nothing ThenReDim arrAddress(1 To rngSelect.Count)intIndex = 1For Each c In rngSelectarrAddress(intIndex) = c.AddressintIndex = intIndex + 1NextDebug.Print Join(arrAddress, ",")End If
End Sub
【代码解析】
第3行代码调用InputBox
方法实现用户选择单元格区域。
第4行代码判断用户是否选择了单元格区域。
第5行代码声明动态数组,用于保存单元格地址。
第6行代码初始化数组下标变量。
第7~10行代码使用For Each循环遍历单元格区域。
第8行代码将单元格地址保存在数组中。
第9行代码下标变量加一,指向下一个位置。
第11行代码调用Join
函数将数组组合为一个字符串。
运行示例代码【立即窗口】中输出如下图所示。
这个代码并不复杂,多少VBA爱好者都可以完成,这里要提醒大家注意的是,循环遍历Range对象有两种方法
- For Each循环
- For循环,Range(编号)
对于连续单元格区域,这两种方式都可以,但是对于本示例来说,只能使用第一种方式。
使用第2中方式改写代码如下。
Sub demo()Dim arrAddress(), rngSelectSet rngSelect = Application.InputBox("Select Range", Type:=8)If Not rngSelect Is Nothing ThenReDim arrAddress(1 To rngSelect.Count)For intIndex = 1 To rngSelect.CountarrAddress(intIndex) = rngSelect.Cells(intIndex).AddressNextDebug.Print Join(arrAddress, ",")End If
End Sub
运行代码,结果如下所示。
$B$5,$B$6,$B$7,$B$8,$B$9
其中的问题在于rngSelect.Cells(intIndex)
,并没有像我们希望的那样在Range对象中依次遍历单元格,而是以第一个单元格为基准单元格,顺次向下定位单元格,因此返回值为5个连续单元格。
大家在选择遍历方法的时候,需要注意二者的区别,而不是简单地认为二者永远都是相同的。
快速获取InputBox选中区域的单个单元格引用地址相关推荐
- 计算机上wps表格乘除算法,WPS excel如何快速运算单个单元格中的乘除法?
上一期我们学习了如何快速运算单个单元格中的加减法小技巧,今天再来带大家了解一下乘除的算法.当然,只要学会了今天的内容,以后就算遇到单个单元格中的混合运算,我们也可以轻松搞定啦. 首先,在首行单元格中输 ...
- asp.net gridview删除 获取到第一行第一列的单元格内容_VBA中的常用单元格引用方式...
VBA编程经常和"对象"打交道,其中最频繁的对象大概就是"单元格"了.(听说您还没有对象?那--我想你大概需要一份Excel,包邮988--) 今天我们就来聊一 ...
- Excel生成报表之解决方案--设置单个单元格格式
首先要看效果图: 单元格C3设置字体.数据格式和边框属性,要生成这样的效果要进行哪些设置.先看在微软Excel中如何需要设置. 一.微软Excel中设置单个单元格 1.首先在C3中输入数值12. 如果 ...
- 删除一行下方单元格上移_快速删除Excel工作表多余空单元格
从其他地方复制了数据,有时候会出现多余的空单元格.手动删除很麻烦,就像下面的图中的工作表区域. 下面介绍一种方法,可以快速删除多余空单元格. 1.选中目标区域,在这里就选中A1:A9的单元格区域. 2 ...
- excel怎么一个格子斜分_如何快速把excel表格左上角的一个单元格斜分成2或3个单元格.doc...
如何快速把excel表格左上角的一个单元格斜分成2或3个单元格 如何快速把excel表格左上角的一个单元格斜分成2或3个单元格 篇一:使用excel表格12个小技巧 1.Excel中插入空白行 如果想 ...
- easyExcel设置单个单元格(颜色)样式
背景:需求是使用excel设置目标单元格的样式(颜色),但我之前没有学过easyExcel,在网上找资料的时候,发现有关easyExcel相关的单个单元格样式设置的资料比较少,有的还源码不全,只能说用 ...
- EasyExcel设置行中单个单元格的样式
1. 前言 在近期的工作中遇到一个导出Excel的需求: 用户通过Excel导入信息,校验用户导入的信息是否合法:如果导入的信息不合法,则保存失败:并且需要精确到行的字段设置标识,然后再将用户导入的信 ...
- Excel单个单元格多个数值求平均值
Excel单个单元格多个数值求平均值 标签: Excel办公求和实用单元格 办公软件相关(3) 下面例子以office2007为例操作 数据格式如下图: EVALUATE(A1) 这个是核心 1:首先 ...
- EXCEL使用技巧-如何将单个单元格内容隐藏
1.隐藏单元格中的内容 选中需要隐藏的单元格或是单元格区域,点击鼠标右键,选择"设置单元格格式",然后在"数字"选项卡,在"分类"框中,点击 ...
- 【无标题】EXCEL合并选中列相同内容单元格(VBA)
Sub 合并选中列相同内容单元格()Dim rngData As RangeDim i&, lngCol&, lngFirst, lngLastOn Error Resume Next ...
最新文章
- 搜索进一步细化 谷歌或重回大陆
- 浏览器是如何工作的系列:渲染引擎
- 告诉各位为如何学习linux系统
- 【Flink】Flink 1.12.2 TaskSlotTable
- 从二分逼近领略计算科学的魅力
- 二、三层交换机与路由器
- Mysql高级部分系列(一)
- 电影院订票选座小程序,电影购票小程序,微信小程序电影院订票系统毕设作品
- win10输入法添加美式键盘(符合Win7习惯)
- 论文笔记:PSGAN
- 解决win10搜索框不能用的问题
- 使用.NET 将PDF转成Word
- 采集工商信息的10个经典方法
- 液晶电视怎么选才不花冤枉钱?整理液晶电视常用参数及选购技巧
- IP-Guard桌面安全解决方案
- 局域网文件夹同步工具
- C#,图像二值化(04)——全局阈值的凯勒算法(Kittler Thresholding)及源程序
- c语言递归计算哈夫曼编码,哈夫曼树遍历求WPL和哈夫曼编码C语言--For初学者
- 设主存容量为256K字,Cache容量为2K字,块长为4
- 软件测试:用“bug”来表示“在电脑程序里的错误”