我希望找出如何在VBA中的If语句中比较字符串。
我想在if语句中使用字符串比较,以便从具有重复字符串的数组中创建唯一字符串的数组
例如:[x,y,y,z,z,z]-> [x,y,z]
Dim A() As String = {"abc","abc","abc","def","def","ghi"}
Dim Alength As Long = Len(A)
Dim tempcounter As Integer = 0
Dim B As String()
For i = 1 To Alength
If i = 1 Then
tempcounter = tempcounter + 1
ReDim Preserve B(tempcounter) As String
B(tempcounter) = A(i)
ElseIf i > 1 Then
If A(i) <> A(i - 1) Then
tempcounter = tempcounter + 1
ReDim Preserve B(tempcounter) As String
B(tempcounter) = A(i)
End If
End If
Next
使用此代码,B作为A的副本返回。我希望B以(“ abc”,“ def”,“ ghi”)结尾
我尝试在if语句中使用字符串比较,例如:StrComp(A(i),A(i-1)),但我无法使它正常工作。
我需要做些什么才能使字符串与我打算的功能进行比较?
定义数组的方式存在两个问题。实际上,您的代码甚至都不会在VBA中运行。我已经编辑了您的代码,因此它将按说明运行。
Sub CompareString()
Dim A() As Variant
Dim Alength As Long
Dim B() As String
Dim TempCounter As Integer
Dim Flag As Boolean
A = Array("abc", "abc", "abc", "def", "def", "ghi")
TempCounter = 0
ReDim B(0 To 0)
'Loops through A
For i = 0 To UBound(A) Step 1
Flag = False
'Loops through B
For j = 0 To UBound(B) Step 1
If A(i) = B(j) Then
Flag = True
Exit For
End If
Next j
'If the element was not found in B it will be added
If Flag = False Then
ReDim Preserve B(0 To TempCounter)
B(UBound(B)) = A(i)
TempCounter = TempCounter + 1
End If
Next i
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句