Board logo

標題: [發問] 判斷範圍內是否出現#NA或特定字串 [打印本頁]

作者: wei9133    時間: 2021-12-14 20:05     標題: 判斷範圍內是否出現#NA或特定字串

這個可正常運作,可以獲取該行碰到第一個na的位置,但我有疑問

Sub test1()
Dim max_row As Integer
Dim i As Integer
Calculate '重算所有儲存格
max_row = Sheets("contorl").Cells(Rows.Count, 2).End(xlUp).Row '獲取B欄最後一格的位置(第幾位)
For i = 2 To max_row
  If Not IsError(Range("N" & i)) Then error_var = i '取得第一個碰到是NA的格子
   Next i
Debug.Print "出現na位置"; error_var; "總行數"; max_row
End Sub

'這裡的If Not IsError(Range("N" & i)) Then error_var = i '取得第一個碰到是NA的格子
'照我理解應該要是If IsError(Range("N" & i)) Then error_var = i 才是有碰到NA把位置I寫進error_var裡
'但實際執行卻是If Not IsError(Range("N" & i)) Then error_var = i 才會把碰到的NA寫進error_var裡

;==================我是分格線====================

Sub test2()
Dim max_row As Integer
Dim i As Integer
Calculate '重算所有儲存格
max_row = Sheets("contorl").Cells(Rows.Count, 2).End(xlUp).Row '獲取最後一格的位置(第幾位)
For i = 2 To max_row
  If Range("N" & i) = "E2" Then error_var = i '取得第一個碰到是E2的格子
   Next i
Debug.Print error_var
End Sub

以上的巨集下面這句會報 "執行階段錯誤 '13': 型態不符合"
If Range("N" & i) = "E2" Then
請問應該如何修改


整體的需求是先從活頁簿contorl獲取B列有資料的最後一行數 再去判斷範圍N列是否有出現NA或著E2,若有則報錯
假設B列有10行,就是判斷N2~N10是否有出現NA或E2
EXCEL版本是2003
作者: samwang    時間: 2021-12-14 20:32

回復 1# wei9133

請附上檔案,謝謝
作者: 准提部林    時間: 2021-12-14 22:36

Dim F As Range
Set F = Range("N:N").Find("#N/A", , xlValues, xlWhole)
If Not F Is Nothing Then MsgBox F.Address
作者: wei9133    時間: 2021-12-16 22:46

回復 2# samwang


    你好,因附件減肥後還是大於1MB,論壇無法上傳,故放在免空裡
連結在此:https://mir.cr/WQXCGOZK
點進去後進入列表則一空間下載即可。
作者: wei9133    時間: 2021-12-16 22:48

回復 3# 准提部林


感謝回覆
晚點做測試




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)