Neden IFNA'm (veya ISNA) VBA modülünde çalışmıyor?


0

Takip koduna sahibim:

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

ancak bu satırda hata veriyor: ActiveCell.Value = IfNa (D6, "Sil")

D6 #NA ise, gerçekleşmesini istediğim, E6 hücresindeki "delete" kelimesini koymak.

Birisi bu kod ile bana yardımcı olabilir?

Yanıtlar:


1

Hata bu satırda:

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

Bunun yerine kullanın:

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

veya daha kısaca:

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

yazdığın şeyi
yaptım

Eğer Application.WorksheetFunction.IsNA (IsThisNA.Value) Sonra denediniz mi?
ahbap,

1

Formülden bir dize yapmalısınız. Var:

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

Ancak bu olmalı:

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

IFBoş dize olmak üzere ikinci parametreyi eklediğime dikkat edin , ancak bunu değiştirmek isteyebilirsiniz.

Not: IFNABunun yerine Excel 2011'den beri kullanabilirsiniz IF(ISNA(..),..).

Düzenleme: bu cevaba dayanarak tüm sütuna genişletebilirsiniz:

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

Örneğin buradaE1:E6 belirtildiği gibi sabit bir aralık da ekleyebilirsiniz .

Düzenleme 2: sütunun tamamını doldurmak istiyorsanız, formülü satır 1'e (örneğin E1) koymanız ve tüm sütunu otomatik olarak doldurmanız gerekir (örn. E:E). Daha az satır istiyorsanız, bunu otomatik doldurma hedefinde belirtmelisiniz, örneğin:

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

Böylece otomatik doldurma aralığı formülle aynı konumda başlıyor ( E2bu örnekte).


Bunun gibi bir sütunda nasıl çalışabilirim: (çalışmıyor) codeAlt TestNA () IsThisNA = Sayfalar ("sayfa1"). Aralık ("D: D"). Sayfalar ("sayfa1"). Aralık (" , " ")"" "", "" Sil " 'ActiveCell.Value = IsThisNA 'MsgBox ISNA End Sub E: E = EĞER (D ISNA (D)".) ActiveCell.Value = seç"code
danm

bu yüzden son aralıkta başarısız olur: Aralık ("E2"). Otomatik Doldurma Hedef: = Aralık ("E: E"), Tür: = xlFillDefault, yeni kod bloğu için orijinal yazıya bakın
DanM
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.