【问题标题】:Excel - macro to select cell in workbook with current dateExcel - 使用当前日期在工作簿中选择单元格的宏
【发布时间】:2016-07-10 05:46:42
【问题描述】:

我正在 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),但当单元格在另一张纸上时会失败。

任何帮助将不胜感激!

【问题讨论】:

标签: excel macros vba


【解决方案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

请注意,在选择范围之前,您需要激活父工作表。

【讨论】:

  • 他已经有循环了。我的答案的唯一缺点是,它并没有通过让他不必使用这些循环来改善他的答案,因为我发现搜索所有工作表的方法与你的相同。我基于ozgrid.com/forum/showthread.php?t=36968尝试找到一个向量化的答案。
  • @Hack-R 请注意 For 循环仅通过工作表。这就是它的完成方式。然后在每张纸中,它要么被找到,要么没有。我不确定您所说的“我找到的方法”是什么意思。你是说你拒绝我的投票是因为它和你的一样吗?如果是这样,那就是不正确地使用不赞成票,这应该反映答案是否解决了问题并且有效。
  • 我不同意反对票,如果这是因为那里有一个 for 循环。更重要的是,正在使用的 for 循环仅用于循环工作表,这是正在执行的内容的一小部分。 +1 的答案。简单有效。
猜你喜欢
  • 1970-01-01
  • 2021-07-04
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多