IFNA (또는 ISNA)가 VBA 모듈에서 작동하지 않는 이유는 무엇입니까?


0

다음 코드가 있습니다.

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

그러나이 줄에서 오류가 발생합니다 : ActiveCell.Value = IfNa (D6, "삭제")

D6이 #NA 인 경우 셀 E6에 "삭제"라는 단어를 입력하는 것이 좋습니다.

누군가이 코드로 나를 도울 수 있습니까?

답변:


1

이 행에 오류가 있습니다.

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

대신 사용하십시오 :

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

또는 더 간결하게 :

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

나는 당신이 쓴 것을 시도했지만 IF 문 에서이 오류가 발생했습니다 : 런타임 오류 '13': Type Mismatch
DanM

If Application.WorksheetFunction.IsNA (IsThisNA.Value) 그렇다면 ...을 사용해 보셨습니까?
duDE

1

수식에서 문자열을 만들어야합니다. 당신은 :

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

그러나 이것은 다음과 같아야합니다.

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

IF빈 문자열이되도록 두 번째 매개 변수를 추가 했지만이를 변경하고 싶을 수도 있습니다.

참고 : IFNA대신 Excel 2011부터 사용할 수 있습니다 IF(ISNA(..),..).

편집 : 이 답변 을 기반으로 전체 열에 대해 확장 할 수 있습니다.

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

예를 들어 여기에E1:E6 표시된대로 고정 범위를 지정할 수도 있습니다 .

편집 2 : 전체 열에 대해 채우려면 수식을 행 1 (예 E1:)에 놓고 전체 열 (예 :)에 대해 자동 채우기를 수행해야합니다 E:E. 더 적은 행을 원하면 자동 채우기 대상에서 다음과 같이 표시해야합니다.

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

따라서 자동 채우기 범위는 공식과 동일한 위치에서 시작됩니다 ( E2이 예에서는).


(작동하지 않음) codeSub TestNA () IsThisNA = Sheets ( "sheet1"). Range ( "D : D"). Select Sheets ( "sheet1"). Range ( " E : E "). ActiveCell.Value 선택 ="= IF (ISNA (D : D), ""삭제 "", "" "") " 'ActiveCell.Value = IsThisNA'MsgBox IsNA End Subcode
DanM

마지막 범위에서 실패합니다 : Range ( "E2"). AutoFill 대상 : = Range ( "E : E"), 유형 : = xlFillDefault, 새 코드 블록에 대한 원본 게시물 참조
DanM
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.