Excel - 宏以选择具有当前日期的工作簿中的单元格

时间:2016-07-09 20:29:00

标签: excel excel-vba macros vba

我在Excel中创建日历/日程安排工作簿。它有一个每个月的工作表。

现在我需要创建一个CommandButton,它将我带到包含当前日期的单元格。只有一个单元格具有当前日期,但它可以在工作簿的任何工作表上。

我现在一直在寻找好几天,但是无法正确使用它!

我一直在尝试的事情:

Private Sub CommandButton1_Click()

Dim Sh As Worksheet
Dim Loc As Range

For Each Sh In ThisWorkbook.Worksheets
    With Sh.UsedRange
        Set Loc = .Cells.Find(What:=Int(Date), LookIn:=xlValues)
        If Not Loc Is Nothing Then
            Do Until Loc Is Nothing
                Loc.Select
                Set Loc = .FindNext(Loc)
            Loop
        End If
    End With
    Set Loc = Nothing

Next

End Sub

当具有当前日期的单元格位于同一张纸上时(虽然它会一直重新选择单元格直到我按下Esc),但当单元格位于另一张纸张上时会失败,这种情况有效。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

我认为你不需要Do While循环。由于您只是寻找一个,这个简单的For / Next应该这样做。一旦发现代码退出循环并转到结束时的选择部分。如果未找到日期,则不会选择任何内容:

Private Sub CommandButton1_Click()
Dim Sh As Worksheet
Dim Loc As Range

For Each Sh In ThisWorkbook.Worksheets
    With Sh.UsedRange
        Set Loc = .Cells.Find(What:=Int(Date), LookIn:=xlValues)
        If Not Loc Is Nothing Then
            Exit For
        End If
    End With
Next
If Not Loc Is Nothing Then
    'need to activate parent sheet before selecting cell
    Loc.Parent.Activate
    Loc.Select
End If
End Sub

请注意,在选择范围之前,您需要激活父资料。