You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA循环遍历914行查找指定日期并定位至对应行B列

问题描述

我有一个包含14个日期的数据范围(如图所示),总共有914行数据。需要编写循环程序实现以下功能:

  • 弹出输入框接收用户输入的日期
  • 若该日期存在于某一行的L列至Y列范围内,定位到该行的B列单元格

目前现有代码仅能在第2行的L列至Y列查找日期,需修改代码使其遍历全部914行并定位对应行的目标位置。尝试的代码如下:

Sub FindABC()
    Dim rng As Range
    Dim b As Range
    Set b = Range("A2")
    Set rng = Range("L2:Y2]").Find(What:=InputBox("Enter Date", "Enter a Date"), LookAt:=xlWhole)
    If Not rng Is Nothing Then
        b.Select
        Exit Sub
    End If
End Sub
修改后的代码
Sub FindABC()
    Dim inputDate As Variant
    Dim lastRow As Long
    Dim currentRow As Long
    Dim rng As Range
    
    ' 获取用户输入的日期
    inputDate = InputBox("请输入日期", "日期输入")
    ' 用户取消输入则退出程序
    If inputDate = "" Then Exit Sub
    
    ' 动态获取数据最后一行(以L列有数据为准)
    lastRow = Cells(Rows.Count, "L").End(xlUp).Row
    ' 若确定是固定914行,可替换为:lastRow = 915 ' 从第2行开始共914行,结束行是2+914-1=915
    
    ' 遍历每一行查找目标日期
    For currentRow = 2 To lastRow
        Set rng = Range("L" & currentRow & ":Y" & currentRow).Find(What:=inputDate, LookAt:=xlWhole)
        If Not rng Is Nothing Then
            ' 定位到对应行的B列单元格
            Cells(currentRow, "B").Select
            Exit Sub ' 找到第一个匹配后退出,若需查找所有匹配可删除此句
        End If
    Next currentRow
    
    ' 未找到日期时提示用户
    MsgBox "未找到输入的日期", vbInformation
End Sub
关键修改说明
  • 新增循环逻辑:遍历从第2行到数据最后一行的所有行,覆盖全部914行数据
  • 动态获取最后一行:避免硬编码行数,适配数据行数变化;若需固定914行可直接设置lastRow = 915
  • 优化输入处理:增加用户取消输入的判断,避免空值报错
  • 定位修正:找到日期后定位到对应行的B列,而非原代码固定的A2单元格
  • 增加未找到提示:遍历结束未匹配时给出明确反馈

内容的提问来源于stack exchange,提问作者Sonam Delvadia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 08:25:21