Auf Text in Excel prüfen?

967
jase8888

Wie kann ich meine IF-Funktion dazu bringen, eine Fehlermeldung zurückzugeben, wenn in Zelle C4 keine Nummer eingegeben wurde? Mein Code unten wird ausgeführt, wenn Sie eine Zahl eingeben. Sie wird jedoch auch ausgeführt, wenn Zelle C4 leer ist. Nur wenn ich Text in die Zelle eingebe, wird die Fehlermeldung angezeigt.

Private Sub CommandButton1_Click() If IsNumeric(Range("C4")) = True Then FinishClear Else MsgBox "Please enter Invoice number" End If End Sub 
1
Sheets ("InvoiceList"). Activate (Aktivieren) - Öffnet ein Arbeitsblatt myRow = Cells (Rows.Count, "A"). End (xlUp) .Row + 1 - sucht die nächste verfügbare Nummer in Folge und addiert 1 für die nächste Rechnungsnummer. jase8888 vor 6 Jahren 0
Der Rest des Codes kopiert dann die Daten auf dem Rechnungsarbeitsblatt in das Arbeitsblatt für die Rechnungsliste. Ich frage nicht nach jemandem, um meine Arbeit zu erledigen. Ich frage, ob jemand weiß, was ich tun soll, um dies zu bestätigen. Wie in, wenn es keinen Text in Cell, C4, C5, C8 usw. gibt, wird "fehlender Text" angezeigt und die Daten nicht an die Invoicelist gesendet jase8888 vor 6 Jahren 0
Ja, ich habe es mit If IsNumeric (Range ("C4")) = True Then ..... und es setzt den Code oben und funktioniert, aber wenn die Zelle leer ist, sollte sie eine msgbox anzeigen, die keine Rechnungsnummer sagt - die Das Problem ist, wenn Zelle C4 leer ist, glaubt sie, dass es eine Nummer ist und funktioniert, die ich nicht möchte. jase8888 vor 6 Jahren 0
Bearbeiten Sie Ihren Post und fügen Sie diese Informationen hinzu, da es zeigt, was Sie versucht haben. Ich werde dann helfen, das Problem zu beheben Dave vor 6 Jahren 0
ok danke - ive änderte die Frage, um mein Problem besser zu erklären. jase8888 vor 6 Jahren 0

2 Antworten auf die Frage

2
Gabriel Caron L'Écuyer

Ihr Problem ist, dass die IsNumeric()Funktion true zurückgibt, wenn die Zelle aufgrund ihrer Definition leer ist. Siehe Dokumentation zur IsNumeric()Funktion hier

Um zu überprüfen, ob eine Zelle leer ist, können Sie die IsEmpty()Funktion verwenden. Sie finden diesen Link für weitere Informationen zu dieser Funktion.

Daher müssen Sie in Ihrer Funktion überprüfen, ob die Zelle nicht leer ist und einen numerischen Wert enthält.

Private Sub CommandButton1_Click() If IsNumeric(Range("C4").value) And Not IsEmpty(Range("C4")) Then FinishClear Else MsgBox "Please enter Invoice number" End If End Sub 
Es empfiehlt sich auch, den Wert des Bereichs durch Aufrufen des Range- ("C4") - Werts im Aufruf der isnumeric-Funktion als aktualisiert in meiner Antwort aufzurufen. Der Aufruf von IsNumeric (Range ("C4")) funktioniert jedoch auch. Gabriel Caron L'Écuyer vor 6 Jahren 0
Sie können auch mit Range ("C4") überprüfen, ob die Zelle leer ist. Wert <> "", wie von Dave vorgeschlagen. Es funktioniert ebenso wie die Verwendung der IsEmpty () - Funktion, benötigt jedoch aufgrund der impliziten Konvertierungen, die VBA für den Vergleich benötigt, etwas mehr Verarbeitungsleistung. Gabriel Caron L'Écuyer vor 6 Jahren 0
0
Dave

Das Problem ist, dass Sie den Wert nicht aufrufen

Range("C4")ist das Zellobjekt. Dies hat viele Eigenschaften, von denen eine der Wert ist. Als solches müssen Sie auf aktualisierenRange("C4").Value

Sie prüfen auch, ob es numerisch ist, aber Sie müssen überprüfen, ob es leer ist oder nicht.

Dies bedeutet Ihre if-Aussage

If Range("C4").Value <> "" Then 
danke dafür aber es schickt immer noch den nächsten teil wenn die zelle C4 leer ist kann ich nicht den kopf herumbekommen warum jase8888 vor 6 Jahren 0
Updated @ jase8888 Wenn es Ihnen egal ist, ob es numerisch ist oder nicht, überprüfen Sie, ob es nicht leer ist Dave vor 6 Jahren 0