在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选中区域的单个单元格引用地址相关推荐

  1. 计算机上wps表格乘除算法,WPS excel如何快速运算单个单元格中的乘除法?

    上一期我们学习了如何快速运算单个单元格中的加减法小技巧,今天再来带大家了解一下乘除的算法.当然,只要学会了今天的内容,以后就算遇到单个单元格中的混合运算,我们也可以轻松搞定啦. 首先,在首行单元格中输 ...

  2. asp.net gridview删除 获取到第一行第一列的单元格内容_VBA中的常用单元格引用方式...

    VBA编程经常和"对象"打交道,其中最频繁的对象大概就是"单元格"了.(听说您还没有对象?那--我想你大概需要一份Excel,包邮988--) 今天我们就来聊一 ...

  3. Excel生成报表之解决方案--设置单个单元格格式

    首先要看效果图: 单元格C3设置字体.数据格式和边框属性,要生成这样的效果要进行哪些设置.先看在微软Excel中如何需要设置. 一.微软Excel中设置单个单元格 1.首先在C3中输入数值12. 如果 ...

  4. 删除一行下方单元格上移_快速删除Excel工作表多余空单元格

    从其他地方复制了数据,有时候会出现多余的空单元格.手动删除很麻烦,就像下面的图中的工作表区域. 下面介绍一种方法,可以快速删除多余空单元格. 1.选中目标区域,在这里就选中A1:A9的单元格区域. 2 ...

  5. excel怎么一个格子斜分_如何快速把excel表格左上角的一个单元格斜分成2或3个单元格.doc...

    如何快速把excel表格左上角的一个单元格斜分成2或3个单元格 如何快速把excel表格左上角的一个单元格斜分成2或3个单元格 篇一:使用excel表格12个小技巧 1.Excel中插入空白行 如果想 ...

  6. easyExcel设置单个单元格(颜色)样式

    背景:需求是使用excel设置目标单元格的样式(颜色),但我之前没有学过easyExcel,在网上找资料的时候,发现有关easyExcel相关的单个单元格样式设置的资料比较少,有的还源码不全,只能说用 ...

  7. EasyExcel设置行中单个单元格的样式

    1. 前言 在近期的工作中遇到一个导出Excel的需求: 用户通过Excel导入信息,校验用户导入的信息是否合法:如果导入的信息不合法,则保存失败:并且需要精确到行的字段设置标识,然后再将用户导入的信 ...

  8. Excel单个单元格多个数值求平均值

    Excel单个单元格多个数值求平均值 标签: Excel办公求和实用单元格 办公软件相关(3) 下面例子以office2007为例操作 数据格式如下图: EVALUATE(A1) 这个是核心 1:首先 ...

  9. EXCEL使用技巧-如何将单个单元格内容隐藏

    1.隐藏单元格中的内容 选中需要隐藏的单元格或是单元格区域,点击鼠标右键,选择"设置单元格格式",然后在"数字"选项卡,在"分类"框中,点击 ...

  10. 【无标题】EXCEL合并选中列相同内容单元格(VBA)

    Sub 合并选中列相同内容单元格()Dim rngData As RangeDim i&, lngCol&, lngFirst, lngLastOn Error Resume Next ...

最新文章

  1. 搜索进一步细化 谷歌或重回大陆
  2. 浏览器是如何工作的系列:渲染引擎
  3. 告诉各位为如何学习linux系统
  4. 【Flink】Flink 1.12.2 TaskSlotTable
  5. 从二分逼近领略计算科学的魅力
  6. 二、三层交换机与路由器
  7. Mysql高级部分系列(一)
  8. 电影院订票选座小程序,电影购票小程序,微信小程序电影院订票系统毕设作品
  9. win10输入法添加美式键盘(符合Win7习惯)
  10. 论文笔记:PSGAN
  11. 解决win10搜索框不能用的问题
  12. 使用.NET 将PDF转成Word
  13. 采集工商信息的10个经典方法
  14. 液晶电视怎么选才不花冤枉钱?整理液晶电视常用参数及选购技巧
  15. IP-Guard桌面安全解决方案
  16. 局域网文件夹同步工具
  17. C#,图像二值化(04)——全局阈值的凯勒算法(Kittler Thresholding)及源程序
  18. c语言递归计算哈夫曼编码,哈夫曼树遍历求WPL和哈夫曼编码C语言--For初学者
  19. 设主存容量为256K字,Cache容量为2K字,块长为4
  20. 软件测试:用“bug”来表示“在电脑程序里的错误”

热门文章

  1. 【机器学习】树及其组合算法(一)(Bagging,Boosting,GBDT,XGboost,Adaboost,随机森林)
  2. 云计算,大数据,人工智能本质和概念
  3. css中pc和pt,css中px和pt的区别是什么
  4. B帧对视频清晰度/码率的影响
  5. GitHub双重认证问题
  6. 获得代理ippython_Python3.x:免费代理ip的批量获取并入库
  7. 盘点14个因安全事故引咎辞职的高管领导
  8. 微信公众号迁移函、公证所需资料与流程
  9. 企业微信 网页授权登入demo
  10. css样式中的border-radius属性