Две строки не равны при сравнении, хотя они одинаковые - PullRequest
0 голосов
/ 20 апреля 2011

Привет, ребята / 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

Ответы [ 2 ]

0 голосов
/ 21 апреля 2011

Это то, что сработало. До сих пор не знаю, что было не так. Понял, если бы я использовал 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
0 голосов
/ 20 апреля 2011

В более неприятных случаях визуального осмотра недостаточно, чтобы выявить виновника, ставящего в тупик сравнение.(Последовательности) пробелов или аналогичных глифов для различных кодовых точек Юникода могут обмануть глаза.Поэтому инвестируйте в функцию, которая принимает строку и возвращает ее «hexdump» (используя Hex, AscW, Mid и padding) и применяет ее к LookFor (переименованному из tmp, который рискованно используется повторно) и к фактическому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...