excel vba将非连续范围select移动到数组中

在用户select两个不连续的列范围的情况下,我写了以下内容:

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 

但是,当我尝试这个时,我得到一个对象错误。 我索引价值错了吗?

这应该是正确的? 有没有更简单的方法来做到这一点?

任何帮助是极大的赞赏!

谢谢,

拉斯

我怕你的代码不能编译。 首先,你需要正确地声明你的variables。 你也应该使用Option Explicit 。

 Option Explicit Dim count As Long Dim points As Variant Dim i As Long Dim user_range As Range 

Count和ReDim行是可以的,但是你假设两个select都是相同的大小。 情况总是如此吗?

然后我不知道你想要做什么,但我猜你只是想将user_range的值保存user_range

你需要让他们有点不同:

 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