Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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_Time_Excel Formula_Vba - Fatal编程技术网

如何获取excel单元格以显示选定的时间

如何获取excel单元格以显示选定的时间,excel,time,excel-formula,vba,Excel,Time,Excel Formula,Vba,我正在尝试创建一个跟踪生产机器停机时间的表。操作员将使用一个包含“停机时间开始”和“停机时间停止”列的表。每次他们必须离开站点时,我希望他们只需单击“停机统计”标题下的空单元格,时间就会显示/记录在单元格中,然后停机停止时也是如此 我了解了=now()的工作原理,但它显示了文件打开的时间,我希望它仅在选中单元格时显示 非常感谢您的帮助!我以前从未在excel中执行过类似的操作。为此,您需要一些VBA。在VBE(alt+f11)中,转到工作表并使用以下内容: Private Sub Workshe

我正在尝试创建一个跟踪生产机器停机时间的表。操作员将使用一个包含“停机时间开始”和“停机时间停止”列的表。每次他们必须离开站点时,我希望他们只需单击“停机统计”标题下的空单元格,时间就会显示/记录在单元格中,然后停机停止时也是如此

我了解了
=now()
的工作原理,但它显示了文件打开的时间,我希望它仅在选中单元格时显示


非常感谢您的帮助!我以前从未在excel中执行过类似的操作。

为此,您需要一些VBA。在VBE(alt+f11)中,转到工作表并使用以下内容:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    'Check to see if the click/selected cell is in columns A or B
    If Not Intersect(Target, Range("A:B")) Is Nothing Then

        'Make sure just one cell is selected:
        If Target.Cells.Count = 1 Then

            'Update the value
            Target.Value = Now()
        End If
    End If

End Sub

这里我们使用的是
工作表\u SelectionChange()
事件。每当在放置此代码的工作表上检测到选择更改时,将触发此事件。当检测到更改时,它将测试所选内容是否在A列或B列中。它还将测试以确保仅单击了一个单元格(否则突出显示这些列将导致列中的每一行随时间更新,这将是不好的)。如果全部通过,则只需将所选单元格的(目标)值设置为当前时间。

或者,您可以按CTRL+SHIFT+:添加当前时间。我需要尽可能避免这种情况,以便只需半秒钟即可执行。CTRL+SHIFT+:要求操作员记住并感谢您的帮助太多了,如果它在一个工作表中,有一堆其他宏,这有关系吗?我想您会从以前添加到它的人那里调用它们?这取决于其他宏是什么。它们是否也会触发表外事件?如果是这样的话,那么你可能会导致一个无限循环,最终导致一个。。。堆栈溢出。如果是这种情况,那么您需要查看一下
应用程序。enableEvents
,您可以将其设置为
true/false
,以防止在vba运行时触发事件。我看到的唯一可能会产生干扰的是一句话,上面写着“使屏幕在宏运行时不会崩溃”应用程序。ScreenUpdate=false。另外,如何使宏仅应用于这些列中的特定数量的行?这只会强制excel在代码运行时不更新UI。不用担心。我会更加注意子程序的名称。如果您在工作表的代码中看到任何以
工作表
开头的sub,那么您需要确保该代码中的内容不会触及此子例程中的列,或者在将它们用作
目标时触发它们。同样,如果您在任何例程中有任何代码
在这些列或列本身的单元格上选择
激活
,那么您无论如何都需要将该代码包装在
EnableEvents=False
EnableEvents=True
中,你会知道它是否是炸弹,因为Excel会很难锁定,你必须强制退出。在将代码转储到工作表中之前,只需保存一份副本,即可恢复。