如果我使用通配符" *" VBA字符串连接不起作用

时间:2016-02-15 10:48:01

标签: excel vba

这段代码连接几个单元格值会创建一个字符串,然后在VB数组中搜索。如果我没有在串联中使用" *" ,那么如果我这样做会打破下面的块。

有什么想法吗?

有效的代码:

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

1 个答案:

答案 0 :(得分:2)

您是否可以避免使用通配符并使用InStr代替?所以,而不是

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

你有

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

初始没有通配符字符串形成。这应该有效,因为InStr如果找不到匹配将返回0。 同样,如果您希望arrStrings值始终是您要匹配的字符串的开头,则可以使用=1而不是>0