Excel 两个串联字符串的可怕类型不匹配——为什么?

Excel 两个串联字符串的可怕类型不匹配——为什么?,excel,vba,Excel,Vba,此代码适用于: Dim tline1 As Variant tline1 = EIRPCases.Range(EIRPCases.Cells(CaseStart + 1 + (i - 1) * CaseRowNum, 4),EIRPCases.Cells(32 + (i - 1) * CaseRowNum, 4)).Value [EB_WGType].Value = tline1 也就是说,它将tline1的字符串复制到名为EB_WGType的单元格中 但以下返回类型不匹配错误: Dim tl

此代码适用于:

Dim tline1 As Variant
tline1 = EIRPCases.Range(EIRPCases.Cells(CaseStart + 1 + (i - 1) * CaseRowNum, 4),EIRPCases.Cells(32 + (i - 1) * CaseRowNum, 4)).Value
[EB_WGType].Value = tline1
也就是说,它将tline1的字符串复制到名为EB_WGType的单元格中

但以下返回类型不匹配错误:

Dim tline1 As Variant, tline2 As Variant
tline1 = EIRPCases.Range(EIRPCases.Cells(CaseStart + 1 + (i - 1) * CaseRowNum, 4),EIRPCases.Cells(32 + (i - 1) * CaseRowNum, 4)).Value
tline2 = EIRPCases.Range(EIRPCases.Cells(CaseStart + 1 + (i - 1) * CaseRowNum, 5),EIRPCases.Cells(32 + (i - 1) * CaseRowNum, 5)).Value
[EB_WGType].Value = tline1 & tline2

我只想连接tline1和tline2字符串,并将它们复制到命名的单元格EB_WGType中。问题是什么?

如果将
tline1
tline2
定义为
Variant
s,它们从最可能跨越多个单元格的范围中接收值,则实际上是数组。
&
运算符不知道如何连接它们

您可以尝试使用
For…Next
循环手动构建
tline1
tline2
的字符串表示形式,然后将它们连接起来。例如

Dim tline1 As Variant, tline2 As Variant, c As Variant
Dim sTmptline1 As String, sTmptline2 As String

tline1 = EIRPCases.Range(EIRPCases...
tline2 = EIRPCases.Range(EIRPCases...

For Each c In tline1
    sTmptline1 = sTmptline1 & CStr(c)
Next
For Each c In tline2
    sTmptline2 = sTmptline1 & CStr(c)
Next
[EB_WGType].Value = sTmptline1 & sTmptline2
但是,当您在构建字符串的数组中进行迭代时,您也可以将这两个数组都使用到stmpline中。例如

Dim tline1 As Variant, tline2 As Variant, c As Variant
Dim sTmptline As String

tline1 = EIRPCases.Range(EIRPCases...
tline2 = EIRPCases.Range(EIRPCases...

For Each c In tline1
    sTmptline = sTmptline & CStr(c)
Next
For Each c In tline2
    sTmptline = sTmptline & CStr(c)
Next
[EB_WGType].Value = sTmptline

请注意,直接从范围创建的数组是二维数组(即使它们只包含来自一行或一列的数据),因此如果不先将它们转换为一维数组,就不能使用
Join
函数。

Steve,您的代码有点奏效。在被引用的工作表中,第一个字符串(tline1)为“WG”,第二个字符串(tline2)为“AL”。所需的输出是WGAL。但是,您的代码生成以下输出:wglalalal。它将第一个字符串复制8次,然后将其连接到第二个字符串,第二个字符串也复制了8次。知道为什么吗?史蒂夫,我成功地修改了你的代码并将其添加到你答案的底部。谢谢你的帮助。