【问题标题】:Excel VBA - Type mismatch on Find functionExcel VBA - 查找功能的类型不匹配
【发布时间】:2021-04-29 21:26:46
【问题描述】:

查找功能有点问题。 我有一个 Excel 表,其中 A 列显示工作日,B 列显示日期。 我正在尝试自动滚动到今天的日期,但如果“今天”不是星期一,则自动滚动到相应周的开始(星期一)。为此,我使用 offset 最多在今天日期前 6 天进行搜索。 虽然我在第二个 Find 函数上遇到类型不匹配错误,该函数正在 A 列中搜索最近的上周一。

您知道为什么会发生这种情况吗?

我目前的代码如下:

Sub Go_to_Today_Button()

Dim searchResult As range
Dim today As range
Dim currentWeek As range
Dim previousMonday As range
   
Set searchResult = Cells.Find(What:=Date, After:=range("B3"), LookIn:=xlFormulas _
        , LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext)

Set today = searchResult.Offset(0, -1)
Set currentWeek = searchResult.Offset(-6, -1)
Set previousMonday = Nothing
   
previousMonday = Cells.Find("Monday", range(currentWeek.Address(), today.Address()), SearchOrder:=xlByRows, SearchDirection:=xlPrevious)

Application.Goto Reference:=range(previousMonday), Scroll:=True

End Sub

谢谢!

【问题讨论】:

  • 您忘记使用关键字Set 将范围分配给previousMonday
  • 感谢您的回复!虽然,建议的更改都没有解决这个问题。也许我错过了什么。
  • 你确定你真的有“星期一”作为工作日列中的文字吗?如果这是我的工作簿,我将使用另一列中的可用日期并将其显示为“dddd”。这将使两列中的值相同,并为您提供要查找的日期,而不是“星期一”。检查两列中的单元格格式。
  • 谢谢,Variatus!是的,我在工作日列中有“星期一”作为文本。我尝试让两列具有相同的值(带有“dddd”的列 A 显示工作日)。但是,我仍然需要让 Find 函数搜索 2(例如,星期日为 1)。并弹出相同类型不匹配错误。

标签: excel vba find goto type-mismatch


【解决方案1】:

计算上一个星期一,然后搜索。

Option Explicit

Sub Go_to_Today_Button()

    Dim previousMonday As Date
    previousMonday = Date - Weekday(Date, vbMonday) + 1

    Dim ws As Worksheet, iLastRow As Long
    Dim rngSearch As Range, rngFound As Range
    
    Set ws = ActiveSheet
    iLastRow = ws.Cells(Rows.Count, "B").End(xlUp).Row
    Set rngSearch = ws.Range("B3:B" & iLastRow)
       
    Set rngFound = rngSearch.Find(What:=previousMonday, After:=Range("B3"), _
        LookIn:=xlFormulas, LookAt:=xlWhole, _
        SearchOrder:=xlByRows, SearchDirection:=xlNext)

    If Not rngFound Is Nothing Then
        Application.Goto Reference:=rngFound, Scroll:=True
    Else
        MsgBox "Could not find " & previousMonday
    End If
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    相关资源
    最近更新 更多