问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

excel vba如何将选中的不连续单元格赋值到数组

发布网友 发布时间:2023-06-23 09:08

我来回答

3个回答

热心网友 时间:2024-04-28 00:35

EXCEL VBA中选中单元格的方法很多,列举如下:

1. 选中单个单元格(以单元格A1为例),可以表述为

range("a1").select

或者表述为

cells(1,1).select

也可以简写为

[a1].select

2. 选中连续单元格(以A1:B2为例),可以表述为

range("a1:b2").select

或者

range(range("a1"),range("b2")).select 此处的range("a1")同样可以表述为第一步中的cell与[a1]形式

3. 选中不连续单元格(以A1:B2,A5:B7为例),可以表述为

Union(Range("a1:b2"), Range("a5:b7")).Select 同理此处的range可以用第一步的cell与[]来代替。

热心网友 时间:2024-04-28 00:36

没试过楼下的行不行,不过楼主可以通过UNION语句把不相连接单元格拼接在一起构成个range

然后用for each 的方法把数据装入数组。。但是这样不好的是只能得到一列或一行数据,不能保留源数据所存地址的其他信息。。。追问不过不知道有多少个Range作为参数,用union怎么写呢?用循环吗?

追答

己经忘 了哪人是楼下的了。。

sub 中用 for each in selection 应可是可以的。

但是如果你是自定义函数,你这个选择区域怎么确定呢?

如果非要用function.的话,可能要多定义几个参数。

以下自定义函数是返回区域内第r个的值,一共定义了四个参数,第一是返回数据的次序号,第二个是一个range区域,必需的,后面两个不是必需的区域,可省略

Function test1(ByVal r As Integer, ByVal rng1 As Range, Optional rng2 As Range, Optional rng3 As Range)
Dim RNG As Range, arr(), i%
If rng2 Is Nothing And rng3 Is Nothing Then
    Set RNG = rng1
    ElseIf Not rng2 Is Nothing Then
    Set RNG = Union(rng1, rng2)
    ElseIf Not rng3 Is Nothing Then
    Set RNG = Union(rng1, rng2, rng3)
End If
For Each c In RNG
    If c.Value <> "" Then
       i = i + 1
        ReDim Preserve arr(i)
        arr(i) = c
    End If
Next
test1 = arr(r)
End Function

修改了下,,但这样的效果也不是很好。。。

注意下,FOR EACH循环是先横着(行)再竖(列)这样一个顺序。

如果要把查找到的内容放入数组内,参考下楼上的redim Preserve Arr(i)

热心网友 时间:2024-04-28 00:36

Option Base 1
Sub test()
Dim Arr() As Variant
Dim i As Long
For Each cl In Selection
i = i + 1
ReDim Preserve Arr(i)
Arr(i) = cl
Next cl

‘在这里你就可以使用ARR数组了

End Sub追问这个sub试了下好像是可以的,但是我想弄个自定义函数,好像就不行了?
Function test2(ByVal inp)
Dim Arr() As Variant
Dim i As Long
For Each cl In inp
i = i + 1
ReDim Preserve Arr(i)
Arr(i) = cl
Next cl
test2 = Arr(1)
End Function

追答你用函数返回一个数组有什么意义
test2 = Arr(1)
你的数组是用来干什么的。
你把整个数组返回了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
康复者的血清中含有什么免疫分子 血清里面有什么 走读的定义在哪些教育阶段适用? PostgreSQL修改数据库表的列属性操作 Ubuntu调整postgresql默认路径 ubuntu – Postgresql:更改默认数据路径 刘邦几个老婆刘邦老婆吕雉和戚夫人的不同结局 刘邦几个老婆?. 如何防止父母在微信群里抢红包? 有哪些适合夏天选择的长裙款式值得推荐? 蜜雪冰城有24小时的吗 秦皇岛蜜雪冰城上下班时间 excel vba 把range(&quot;A1:B3&quot;)如何直接转化成vba下的二维数组? 葫芦岛蜜雪冰城工作时间 小学一年级作文150字:学打太极拳 玫瑰的修剪方法什么时候可以修剪? 玫瑰的修剪时间和方法 镜头怎么换nv夹层 梦见手里拿着冰 梦见青白色的冰 请教如何恢复Nikon D60的自动功能? vb6.0中的text1.enabled属性的text1.locked有什么区别? SAP如何解决产品借用问题? 梦见天蓝的大海的预兆 阳光玫瑰下雨可以修花穗吗? 湖南食品经营许可证网上申报入口 梦到海水涨潮打什么码 sap分为几个模块_sap都有哪些模块 阳光玫瑰雨天可以修枝吗? 如果挖土方3米深下面每边因当要放多少工作面 VBA 数据库结果 遍历替换成新的数组? 蜜雪冰城几点开门营业 利用vba筛选数据并将其中的部分结果存为数组 VBA改写成数组 计算每行和值 我的起源头部霸蛮头带怎样制作 橡皮筋动力小车视频教程 自制腕带制作教程 如何养老玫瑰桩修剪培育? 为什么血糖高要临时胰岛素 玫瑰花怎么养成老桩造型 尼康P7100怎么拍出水流的效果,设置的具体参数。 血糖高能打胰岛素吗 一型糖尿病儿童半夜血糖升到十五十六能打短效胰岛素吗? 关于拍摄夜景和水流的F值的问题 孕妇血糖高可以打胰岛素吗 病人餐后血糖过高能否皮下注射普通胰岛素 发现血糖高了是不是应该马上注射胰岛素来降糖? 血糖很高,能不能打胰岛素呀? 血糖持续偏高,降不下来就要打胰岛素吗 梦见炖了两条鱼的预兆