在用户选择两个非连续列范围的情况下,我写了以下内容:
Dim count long
Dim points variant
Dim i long
Set user_range = ActiveWindow.RangeSelection
count = user_range.count / 2
ReDim points(1 To count, 1 To 2)
For i = 1 To count
MsgBox "value is" & user_range.Areas.Item(1).Value(i,1)
points(i, 1) = user_range.Areas.Item(1).Value(i,1)
points(i, 2) = user_range.Areas.Item(2).Value(i,1)
Next i
但是当我尝试这个时,我得到一个对象错误。我的索引值是错误的吗?
这应该正常吗?有更简单的方法吗?
非常感谢任何帮助!
谢谢,
拉斯
答案 0 :(得分:1)
我担心您的代码无法编译。首先,您需要正确声明变量。您还应该使用Option Explicit。
Option Explicit
Dim count As Long
Dim points As Variant
Dim i As Long
Dim user_range As Range
count和ReDim行没问题,但你假设这两个选择都是相同的大小。总是这样吗?
然后我不确定你想做什么,但我猜你只想将user_range
中的值保存到points
。
你需要对它们加以区别:
points(i, 1) = user_range.Areas(1).Cells(i, 1).Value 'Selection 1
points(i, 2) = user_range.Areas(2).Cells(i, 1).Value 'Selection 2