如果我使用通配符“*”,VBAstring连接不起作用

这段代码连接了一些单元格值创build一个string ,然后在VB数组中search。 如果我不在串联中使用“*” ,它会起作用,如果我这样做,则打破下面的块。

有任何想法吗?

代码工作:

For i = 1 To StringsCount arrStrings(i, 1) = .Range("A" & i + k).Value & "_" & .Range("C" & i + k).Value & "_" & .Range("D" & i + k).Value & "_" & .Range("E" & i + k).Value arrStrings(i, 2) = .Range("A" & i + k).Row k = k + 11 Next i 

不起作用的代码:

 For i = 1 To StringsCount arrStrings(i, 1) = .Range("A" & i + k).Value & "_" & .Range("C" & i + k).Value & "_" & .Range("D" & i + k).Value & "_" & .Range("E" & i + k).Value & "*" arrStrings(i, 2) = .Range("A" & i + k).Row k = k + 11 Next i 

(第二行,在远端,有另外的通配符字符'&' “')。*

阻止“不起作用”下面的这个(引用的行):

 interSum = 0 For i = 1 To UBound(arrStrings) For j = LBound(arrCampaignsAmounts, 1) To UBound(arrCampaignsAmounts, 1) If arrStrings(i, 1) = arrCampaignsAmounts(j, 1) Then interSum = interSum + arrCampaignsAmounts(j, 2) End If Next j 

SourceSheet.Range(“H”&arrStrings(i,2))。Value = interSum

  interSum = 0 Next i 

你可以避免通配符,而使用InStr ? 所以,而不是

 If arrStrings(i, 1) = arrCampaignsAmounts(j, 1) Then 

你会有的

 If InStr(arrCampaignsAmounts(j, 1),arrStrings(i, 1)) > 0 Then 

与您的最初没有通配符string形成。 这应该工作,因为如果发现不匹配, InStr将返回0。 同样的,如果你想让你的arrStrings值始终是你匹配的string的开始,你可以使用=1而不是>0