我试图将数组设置为非连续数组的值。
我的代码
With WBInfoProduit.Sheets(1)
Set myrange = Union(ActiveSheet.Range(Cells(1, ProdNameCol), Cells(rows, ProdNameCol)), ActiveSheet.Range(Cells(1, FundNameCol), Cells(rows, FundNameCol)), ActiveSheet.Range(Cells(1, CompagnieCol), Cells(rows, CompagnieCol)))
结束 所以这个数组有3列,但是当我用debbuger检查时它只有2列。
谢谢你们。
答案 0 :(得分:1)
有几件事。你的代码
With WBInfoProduit.Sheets(1)
Set myrange = Union( _
ActiveSheet.Range(Cells(1, ProdNameCol), Cells(Rows, ProdNameCol)) _
, ActiveSheet.Range(Cells(1, FundNameCol), Cells(Rows, FundNameCol)) _
, ActiveSheet.Range(Cells(1, CompagnieCol), Cells(Rows, CompagnieCol)) _
)
End With
请注意每个"细胞"指的是活动表上的单元格。 所以
使用WBInfoProduit.Sheets(1)
什么都不做!
我试过了:
Sub xxx()
Dim myrange As Range
With ActiveSheet
Set myrange = Union( _
.Range(.Cells(1, 5), .Cells(100, 5)) _
, .Range(.Cells(1, 10), .Cells(100, 10)) _
, .Range(.Cells(1, 20), .Cells(100, 20)) _
)
End With
Debug.Print myrange.Address
End Sub
导致此输出
$E$1:$E$100,$J$1:$J$100,$T$1:$T$100
因此,只要您的代码中的ProdNameCol,FundNameCol,CompagnieCol设置为不同的值,它应该可以工作,但可能只在活动工作表上。
然而,
如果您尝试为阵列分配范围,则需要了解范围区域!
请参阅下面的代码,这将有助于
Sub xxx()
Dim myrange As Range
Dim MyArray() As Variant
Dim MyArray1() As Variant
Dim MyArray2() As Variant
Dim MyArray3() As Variant
Dim MyArray4() As Variant
With ActiveSheet
Set myrange = Union( _
.Range(.Cells(1, 5), .Cells(100, 5)) _
, .Range(.Cells(1, 10), .Cells(100, 10)) _
, .Range(.Cells(1, 20), .Cells(100, 20)) _
)
End With
Debug.Print myrange.Address
Debug.Print myrange.Areas(1).Address
Debug.Print myrange.Areas(2).Address
Debug.Print myrange.Areas(3).Address
MyArray = myrange
MyArray1 = myrange.Areas(1)
MyArray2 = myrange.Areas(2)
MyArray3 = myrange.Areas(3)
' MyArray4 = Union(MyArray1, MyArray2, MyArray3)
End Sub
MyArray4系列将无法使用here获取帮助!