2016-10-04 37 views
-3

任何人都可以帮助我。我正在使用excel创建一个曲棍球模拟器,我需要一种方法(也许是一个按钮?)来取消比赛时间。需要Excel中的代码来减去单元格中的时间

例如,单元格D4将在20:00开始,我需要一个按钮起飞:每次点击它时离开时钟20(二十秒)。因此点击时间将显示19:40,然后再次点击按钮它将显示19:20,然后点击和19:00,然后点击18:40等等,一直到0点。然后它需要重置回到下一个20:00。

我在想,按钮可以工作,但如果有不同的方式,我会感兴趣,只要它使游戏时钟下降:每次我需要它下降20秒。

+1

欢迎来到StackOverflow。请注意,这不是免费的代码写入服务。然而,我们渴望帮助其他程序员(和有志之士)编写他们自己的代码。请阅读[我如何问一个好问题](http://stackoverflow.com/help/how-to-ask)上的帮助主题。您可能还想[参观](http://stackoverflow.com/tour)并在此过程中获得徽章。之后,请用您迄今编写的VBA代码更新您的问题,以完成您希望实现的任务。 – Ralph

回答

0

您可以从excel中的开发人员菜单/工具箱中将按钮插入到电子表格中。

你需要使用[M]。您的单元格的格式为自定义:SS为您的按钮的代码

然后你可以使用:

Sub ChangeGameClock() 

Range("D4").Value = DateAdd("s", -20, Range("D4").Value) 

If Range("D4").Value = "0" Then 
Range("D4").Value = "0:20:00" 
End If 

End Sub 

好运

+0

虽然从你身边向提供VBA代码当然是一个很好的举动,但是你仍然应该努力提供一个完整的答案(看起来)没有写任何代码。上述解决方案不包括是否(应该)使用ActiveX按钮或窗体控件。另外,你应该注意到 - 如果使用表单控件,那么 - 该按钮需要分配上述宏。另外,请完全限定您的代码片段。如上所述,它肯定会在将来导致更多问题/问题:http://stackoverflow.com/q/39854381/1153513 – Ralph

+0

非常感谢您的快速回复。我已经将单元格D4切换到自定义mm:ss,但它会自动将我输入单元格的20:00切换为00:00,并在文本框中显示8:00:00 PM。我已经关闭了表单并重复了几次,但它只是将其切换回来。我甚至在将该单元格切换到自定义mm.ss并且它做同样的事情之后,将相同的信息输入到另一个单元格中。我做错了什么? – H2OxMe

+0

尝试在单元格D4中输入“0.83333333333333”或“= 20/24”,然后将其格式化为“时间”。这应该工作。有关更多信息,您可能需要阅读以下内容:http:// stackoverflow。/ 38001028#38001028 – Ralph

0

尝试下面的代码:

Option Explicit 

Public Sub tmpSO() 

'Set the cell to work on as cell D4 on the sheet 
' with the name Sheet1. You might have to change 
' the sheet name if your sheet is named differently. 
Dim cell As Range 
Set cell = ThisWorkbook.Worksheets("Sheet1").Cells(4, "D") 

'Remove 20 seconds from D4 
cell.Value2 = DateAdd("s", -20, cell.Value2) 
's stands for seconds as outlined here: 
'https://msdn.microsoft.com/en-us/library/office/gg251759(v=office.15).aspx 

'If D4 is 0 or less then it should be reset to 20 minutes 
If cell.Value2 <= 0 Then cell.Value2 = TimeSerial(0, 20, 0) 

End Sub 

如何使用上面的代码:将代码复制到一个空的模块到你r Excel文件。然后,您可以在工作表中添加一个新的(表单控件)按钮,并将上面的宏(当前名为tmpSO)分配给该按钮。如果您使用的是ActiveX按钮,则应在插入按钮后双击该按钮。然后,VBE会弹出像这样的东西:

Option Explicit 

Private Sub CommandButton1_Click() 

End Sub 

只是修改成

Option Explicit 

Private Sub CommandButton1_Click() 

'Set the cell to work on as cell D4 on the sheet 
' with the name Sheet1. You might have to change 
' the sheet name if your sheet is named differently. 
Dim cell As Range 
Set cell = ThisWorkbook.Worksheets("Sheet1").Cells(4, "D") 

'Remove 20 seconds from D4 
cell.Value2 = DateAdd("s", -20, cell.Value2) 
's stands for seconds as outlined here: 
'https://msdn.microsoft.com/en-us/library/office/gg251759(v=office.15).aspx 

'If D4 is 0 or less then it should be reset to 20 minutes 
If cell.Value2 <= 0 Then cell.Value2 = TimeSerial(0, 20, 0) 

End Sub 

之后,您的ActiveX按钮应该工作了。