Hey guys / gals,在VB中遇到一些麻烦,我正在阅读Excel中的字符串并将其与另一个进行比较,当我看到MSGBox看起来它们看起来相同时,但是VB并没有认识到它们是相同的并且它一直在拧紧谢谢你。
Sub runit()
Dim indicator As Integer
Dim actual As String
Dim tmp As String
tmp = "3. AIRCRAF"
Sheets("Sheet2").Select
For i = 3 To 1200
actual = Left(Cells(i, 1).Text, 10)
If i = 203 Then
MsgBox actual & tmp
End If
If actual = tmp Then
MsgBox i
Cells(i, 1).Select
ActiveCell.Range("A1:M997").Select
Selection.Copy
Sheets("Sheet3").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
tmp = "zzZZxxXXedc"
End If
Next
Sheets("Sheet3").Select
tmp = "H."
indicator = 0
For j = 1 To 600
If tmp = actual Then
indicator = 1
Cells(j, 1).Select
tmp = "zzZZxxXXedc"
ActiveCell.Range("A1:M1200").Select
Selection.ClearContents
Cells(1, 1).Select
End If
Next
If indicator = 0 Then
actual = Left(Cells(j, 1).Value, 2)
Rows(j + 1).Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
End If
End Sub
答案 0 :(得分:0)
在更为讨厌的情况下,视觉检查不足以找出导致比较的罪魁祸首。 (用于不同的unicode代码点的空格或类似字形的序列)可能会使人眼前一亮。因此,请投入一个函数,该函数接受一个字符串并返回其'hexdump'(使用Hex,AscW,Mid和padding)并将其应用于LookFor(从您的tmp重命名,可以重复使用)和实际的。
答案 1 :(得分:0)
这就是最终的工作。还是不知道出了什么问题。想想如果我在这两个变量上使用Mid,那么它可能会起作用而且确实如此。想到也许有人可以解释原因。
Sub runit()
Dim indicator As Integer
Dim actual As String
Dim tmp As String
tmp = Mid("3. AIRCRAFT STATUS", 1, 10)
Sheets("Sheet2").Select
For i = 3 To 1200
actual = Mid(Cells(i, 1).Text, 1, 10)
If i = 203 Then
MsgBox (actual) & " " & (tmp)
End If
If actual = tmp Then
MsgBox i
Cells(i, 1).Select
ActiveCell.Range("A1:M997").Select
Selection.Copy
Sheets("Sheet3").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
tmp = "zzZZxxXXedc"
End If
Next
Sheets("Sheet3").Select
tmp = Mid("H. MAJOR INSP REQUIREMENTS:", 1, 5)
indicator = 0
For j = 1 To 600
If tmp = actual Then
indicator = 1
Cells(j, 1).Select
tmp = "zzZZxxXXedc"
ActiveCell.Range("A1:M1200").Select
Selection.ClearContents
Cells(1, 1).Select
End If
Next
If indicator = 0 Then
actual = Mid(Cells(j, 1).Text, 1, 5)
Rows(j + 1).Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
End If
End Sub