在 Sheet 2 中的某处我有以下内容: 点击查看图片
它使用 TEXTJOIN 函数连接 A 列中的值。B100 中的字符串是变量 S(参见代码)。
我试图将其用作宏中方法的输入。以下是模块中的代码片段:
Dim ListofSheets, WorkingSheet As Worksheet
Dim C0, C1 As Range
Dim S As String
Dim WholeRange As Range
Set ListofSheets = Sheets("Sheet2")
...
Set C0 = WorkingSheet.Range(PanelColumn & StartingRow & ":" & PanelColumn & lRow)
Set C1 = WorkingSheet.Range(LoadCaseColumn & StartingRow & ":" & LoadCaseColumn & lRow)
S = ListofSheets.Cells(100, 2).Value
Set WholeRange = Union(S)
WholeRange.Copy
End Sub
C0 和 C1 在代码中计算,范围如下:
C0= C7:C310
C1= D7:D310
运行上述代码时,会出现Set WholeRange = Union(S)
“编译错误:类型不匹配”的错误
我已经尝试过Set WholeRange = Union(C0, C1)
,效果很好,但我不想使用它,因为实际上还有更多变量可以选择。
我的问题是为什么字符串可以作为参数传递,以及如何纠正这个问题?
注意:代码中有超过 2 个范围,但这里没有显示。脚本决定使用哪些范围。由于需要输入超过 2 个范围,因此我使用方法Union
而不是Range
方法
答案1
S
字符串也是如此,尽管它读起来好像是在指定一个范围,但Union()
它需要一个范围目的,这就是为什么会出现类型不匹配错误。您传递了错误的类型。
因此,只要的值S
指定了适当的范围,请尝试类似以下操作:
Dim UnionRange as Range 'declare at top
...
Set UnionRange= WorkingSheet.Range(S) 'insert this after S is assigned
...
Set WholeRange = Union(UnionRange) 'change the range assignment to this