Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel-选择工作簿中当前日期的单元格的宏_Excel_Macros_Vba - Fatal编程技术网

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

Excel-选择工作簿中当前日期的单元格的宏,excel,macros,vba,Excel,Macros,Vba,我正在Excel中创建日历/日程工作簿。它每个月都有一份工作表 现在我需要创建一个CommandButton,它将我带到包含当前日期的单元格。只有一个单元格具有当前日期,但它可以位于工作簿的任何工作表上 我已经找了好几天了,但是找不好 我一直在尝试的事情: Private Sub CommandButton1_Click() Dim Sh As Worksheet Dim Loc As Range For Each Sh In ThisWorkbook.Worksheets With

我正在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键),这种方法会起作用,但当单元格位于另一工作表上时,这种方法会失败


任何帮助都将不胜感激

我认为你不需要边走边做循环。因为你只想找一个,这个简单的for/Next就可以了。一旦找到,代码将退出循环并转到末尾的Select部分。如果未找到日期,则不选择任何内容:

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

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

他已经有一个循环。我的答案唯一的缺点是,它没有改善他的答案,让他不必使用这些循环,因为我发现搜索所有表格的方法与你的相同。我试图找到一个矢量化的答案。@Hack-R请注意For循环只通过表单。就是这样做的。然后在每张纸上,要么找到要么不找到。我不知道你所说的“我找到的方法”是什么意思。你是说你否决了我的,因为它和你的一样?如果是这样的话,那么这是对下一票的错误使用,下一票应该反映出答案是否解决了问题并且有效。如果下一票是因为存在一个for循环,那么我不同意下一票。更重要的是,正在使用的for循环只是在工作表中循环,而这只是正在执行的工作表的一小部分+答案是1。简单而有效。下面是一个如何在工作簿级别而不是工作表级别应用代码的示例,这样您就不必使用循环