2301_77903734 2024-11-24 10:25 采纳率: 0%
浏览 3

VBA遇到错误问题请教

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

img

img

  • 写回答

1条回答 默认 最新

  • 关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你给出的内容来看,你正在尝试用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
    

    这个代码应该能解决你的问题。以下是一些修改和说明:

    1. 我添加了Option Explicit,这是一个好的编程习惯,它可以确保所有变量在使用前都被声明。
    2. 我修正了Set ws - ActiveSheet的语法错误,应该是Set ws = ActiveSheet
    3. 在检查NA值时,我增加了对#N/A的检查,因为Excel中的错误值可能显示为#N/A
    4. 我将naRow - 0修改为naRow = 0,因为-在VBA中不是一个有效的赋值操作符。
    5. 我将If ws . Cells ( i , " E " ) . Value - " NA " Then中的-也修正为=
    6. 我还修正了MsgBox“第一个显示‘NA’的行号是:”& naRow中的引号格式错误,它应该是MsgBox "第一个显示‘NA’的行号是:" & naRow

    希望这个修正后的代码能解决你的问题。如果你还有其他问题,请随时向我询问。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月24日