2016-03-21 12 views
0

Kann nicht herausfinden, was mit dem Code nicht stimmt.Excel VBA: Wenn gleich nicht zu, dann zeigen Fehlermeldung

Ich habe einen Code, wo ich überprüfen muss, ob in bestimmten Blatt bestimmte Produkte ID vor einer Bestellung gefunden werden können.

Private Sub Pardot_Click() 

Dim xlRange As Range 
Dim xlCell As Range 
Dim xlSheet As Worksheet 
Dim valueToFind As String 

valueToFind = pardID 
Set xlSheet = ActiveWorkbook.Worksheets("Noliktava") 
Set xlRange = xlSheet.Range("A1:A500") 

For Each xlCell In xlRange 
    If xlCell.Value <> valueToFind Then 
     MsgBox ("This product wasn't found in the database - ID: " & pardID.Text) 
     Exit Sub 
    End If 
Next xlCell 

End Sub

Grundsätzlich ich starten Sie die Userform und Art der ID (dh 1) in das Feld ein und klicken Sie auf „OK“ oder was auch immer, wenn die ID nicht im Bereich gefunden werden kann (ID: 1) Ich möchte, dass der Fehler Msg angezeigt wird.

Code funktioniert, wenn ich <> zu = ändern, aber das ist nicht das erforderliche Ergebnis.

+1

'valueToFind' ist ein String (Text) Wert und ich nehme an, dass die Spalte A besteht aus Zahlen. Entweder Sie ändern beide in Text oder beide in Zahlen mit 'CStr()' oder 'CLng()' oder 'CDbl()' usw., bevor Sie die Werte vergleichen. – Ralph

+0

Probieren Sie Trim und уbound mit dem =. Wenn am Ende von einem ein Raum ist und nicht der andere, wird es fehlschlagen. – Sorceri

+0

Froh meine Antwort geholfen, aber für Ihr eigenes Wissen, empfehle ich auch @ Ralph's Kommentar zu überprüfen. Kein Zweifel, irgendwann in der Zukunft werden Sie eine Zeichenfolge mit der Nummer – BruceWayne

Antwort

3

Ohne den Code zu sehr zu ändern und wahrscheinlich etwas Zeit zu sparen, verwenden Sie einfach CountIf(), anstatt jede Zelle im Bereich zu überprüfen.

Private Sub Pardot_Click() 

Dim xlRange As Range 
Dim xlCell As Range 
Dim xlSheet As Worksheet 
Dim valueToFind As String 

valueToFind = pardID 
Set xlSheet = ActiveWorkbook.Worksheets("Noliktava") 
Set xlRange = xlSheet.Range("A1:A500") 

If WorksheetFunction.CountIf(xlRange,valuetoFind) = 0 then 
    msgbox "This product wasn't found in the database - ID: " & parId.textEnd 
End If 

End Sub 

Hinweis: Diese für aussehen wird genau der Text der Benutzer eingefügt. Verwenden Sie Platzhalter, wenn es irgendwo in einer Zeichenfolge sein kann (zB Suche nach "Hund" in "doggone", "Hundefutter", "Hund")

+1

vergleichen möchten. Danke, BruceWayne. Funktioniert. – user3688039

Verwandte Themen