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次。知道为什么吗?史蒂夫,我成功地修改了你的代码并将其添加到你答案的底部。谢谢你的帮助。