Warum funktioniert mein IFNA (oder ISNA) nicht in einem VBA-Modul?

Warum funktioniert mein IFNA (oder ISNA) nicht in einem VBA-Modul?

ich habe folgenden Code:

Sub TestNA2()
IsThisNA = Sheets("sheet1").Range("D:D").Select
'Sheets("sheet1").Range("E:E").Select
Range("E2").Formula = "=IF(ISNA(D1),""Delete"","""")"
Range("E2").AutoFill Destination:=Range("E:E"), Type:=xlFillDefault
'ActiveCell.Value = "=IF(ISNA(D:D), ""Delete"","""")"
'ActiveCell.Value = IsThisNA
'MsgBox IsNA
End Sub

aber in dieser Zeile tritt ein Fehler auf: ActiveCell.Value = IfNa(D6, "Delete")

ich möchte, dass das Wort „löschen“ in Zelle E6 eingefügt wird, wenn D6 #NA ist.

kann mir jemand mit diesem Code helfen?

Antwort1

Der Fehler liegt in dieser Zeile:

ActiveCell.Value = IfNa(D6, "Delete")

Verwenden Sie stattdessen:

Set IsThisNA = Sheets("items-1").Range("D6")
If Application.WorksheetFunction.IsNA(IsThisNA.Value) Then 
  ActiveCell.Value = "Delete"
End If

oder, kürzer gesagt:

If Application.WorksheetFunction.IsNA(Sheets("items-1").Range("D6").Value) Then 
  ActiveCell.Value = "Delete"
End If

Antwort2

Sie sollten aus der Formel eine Zeichenfolge erstellen. Sie erhalten:

ActiveCell.Value = IfNa(D6, "Delete")

Aber das hier sollte sein:

ActiveCell.Formula = "=IF(ISNA(D6), ""Delete"","""")"

Beachten Sie, dass ich den zweiten Parameter als IFleere Zeichenfolge hinzugefügt habe. Möglicherweise möchten Sie dies aber ändern.

Hinweis: Sie könnenIFNAseit Excel 2011 statt IF(ISNA(..),..).

Bearbeiten:bezogen aufdiese AntwortSie können es für die ganze Spalte erweitern:

Range("E1").Formula = "=IF(ISNA(D1),""Delete"","""")"
Range("E1").AutoFill Destination:=Range("E:E"), Type:=xlFillDefault

Sie können auch einen festen Bereich angeben, z. B. E1:E6wie inHier.

Bearbeitung 2:Wenn Sie die ganze Spalte ausfüllen möchten, sollten Sie die Formel in Zeile 1 einfügen (z. B. E1) und die automatische Ausfüllung über die ganze Spalte ausführen (z. B. E:E). Wenn Sie weniger Zeilen möchten, sollten Sie dies im Ziel für die automatische Ausfüllung angeben, zum Beispiel:

Range("E2").Formula = "=IF(ISNA(D6),""Delete"","""")"
Range("E2").AutoFill Destination:=Range("E2:E10"), Type:=xlFillDefault

Der automatisch ausgefüllte Bereich beginnt also an derselben Stelle wie die Formel ( E2in diesem Beispiel).

verwandte Informationen