【发布时间】: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