gpt4 book ai didi

VBA - 在一系列单元格中搜索日期,返回单元格地址

转载 作者:行者123 更新时间:2023-12-04 21:53:35 25 4
gpt4 key购买 nike

我正在尝试编写一个函数来在相邻工作表的一系列单元格中搜索作为参数输入的特定日期。在查找日期时,该函数应返回一个字符串“found:”和单元格引用。

一切似乎都运行得很好,但是即使在单元格范围和调用函数时引用的单元格中存在(故意输入的)日期时,该函数也会返回“无”。

在使用日期时调用 find 时我是否错过了一些重要的事情?

请注意,该函数在另一张表中的调用它的同一行中查找。这可能有助于解释我如何设置 rng

    Public Function d_scan(targ As Date) As String
Dim ws As Worksheet
Dim targetSheet As Worksheet
Dim ret As String
Dim rng As String
Dim scanner As Date
Dim found As Range

Set targetSheet = ThisWorkbook.Worksheets("2018")
Set ws = Application.Caller.Worksheet
Let intRow = Application.Caller.Row
Let intCol = Application.Caller.Column

Let rng = "F" & intRow & ":" & "X" & intRow

Set found = targetSheet.Range(rng).Find(What:=targ, LookAt:=xlWhole)

If found Is Nothing Then
Let ret = "nothing"
Else
Let ret = "found: " & found
End If

d_scan = ret

End Function

最佳答案

日期问题非常微妙,它们的解决方案可能取决于实际情况(使用什么变量类型,工作表中使用什么数据格式,......)

首先,您可能想要:

  • 指定所有相关 Find()方法参数,因为未定义的参数将根据其最后一次使用被隐式假定(甚至来自 Excel UI!)
  • 转换 DateString通过 CStr()功能

  • 因此,您可能想尝试以下代码:
    Option Explicit

    Public Function d_scan(targ As Date) As String
    Dim rng As String
    Dim found As Range
    Dim intRow As Long

    intRow = Application.Caller.Row
    rng = "F" & intRow & ":" & "X" & intRow

    Set found = ThisWorkbook.Worksheets("2018").Range(rng).Find(What:=CStr(targ), LookAt:=xlWhole, LookIn:=xlValues) ' specify 'LookIn' parameter, too

    If found Is Nothing Then
    d_scan = "nothing"
    Else
    d_scan = "found: " & found
    End If
    End Function

    关于VBA - 在一系列单元格中搜索日期,返回单元格地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49373630/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com