Excel VBA - 使用字符串变量作为 Union 方法的输入

Excel VBA - 使用字符串变量作为 Union 方法的输入

在 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

相关内容