计划的表格内E列是有公式的,需要查找到E列内第一个出现NA的行号,显示数据类型不匹配的错误~,目前找不到解决方法


以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
从你给出的内容来看,你正在尝试用VBA代码来查找E列中第一个出现NA(或#N/A)的行号。然而,在你的代码中,有几个错误和格式问题。下面是一个修正后的代码:
Option Explicit
Sub FindNAInColumnE()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim naRow As Long
' 设置工作表
Set ws = ActiveSheet
' 找到E列的最后一行
lastRow = ws.Cells(ws.Rows.Count, "E").End(xlUp).Row
' 初始化naRow为0,表示未找到
naRow = 0
' 遍历E列,从第一行到最后一行
For i = 1 To lastRow
If ws.Cells(i, "E").Value = "NA" Or ws.Cells(i, "E").Value = "#N/A" Then
naRow = i
Exit For
End If
Next i
' 输出结果
If naRow > 0 Then
MsgBox "第一个显示‘NA’的行号是:" & naRow
Else
MsgBox "在E列中没有找到NA。"
End If
End Sub
这个代码应该能解决你的问题。以下是一些修改和说明:
Option Explicit,这是一个好的编程习惯,它可以确保所有变量在使用前都被声明。Set ws - ActiveSheet的语法错误,应该是Set ws = ActiveSheet。#N/A的检查,因为Excel中的错误值可能显示为#N/A。naRow - 0修改为naRow = 0,因为-在VBA中不是一个有效的赋值操作符。If ws . Cells ( i , " E " ) . Value - " NA " Then中的-也修正为=。MsgBox“第一个显示‘NA’的行号是:”& naRow中的引号格式错误,它应该是MsgBox "第一个显示‘NA’的行号是:" & naRow。希望这个修正后的代码能解决你的问题。如果你还有其他问题,请随时向我询问。