【问题标题】:Subtract date and time from two NOWs从两个 NOW 中减去日期和时间
【发布时间】:2014-07-28 05:53:32
【问题描述】:

我正在尝试创建一个 VBA 代码,用于计算单击某个操作复选框后经过的时间。

  1. 点击 checkbox1 NOW 时会被捕获并显示在 textbox1 中。
  2. 点击checkbox2 时,文本框3 中显示NOW,并且经过时间(文本框3 中的值-文本框1 中的值)需要以小时和分钟格式准确显示在文本框4 中。在尝试和谷歌搜索不同的代码后,我无法做到这一点。

我一直在使用 VBA,所以我不是很流利。有人可以帮我写一段代码吗?


Dim X1 As Date


Private Sub CheckBox1_Click()

X1 = Now

If CheckBox1.Value = True Then TextBox1.Value = Now
If CheckBox1.Value = False Then TextBox1.Value = Null

If CheckBox1.Value = True Then TextBox2.Value = "00:00"
If CheckBox1.Value = False Then TextBox2.Value = Null


End Sub

Private Sub CheckBox2_Click()

Dim X2 As Date
Dim X3 As Date
Dim X4 As Date

X2 = Now

If CheckBox2.Value = True Then TextBox3.Value = Now
If CheckBox2.Value = False Then TextBox3.Value = Null
If CheckBox2.Value = False Then TextBox4.Value = Null


X3 = X2 - X1
TextBox4.Value = X3

End Sub

【问题讨论】:

  • 使用上面的代码,是否可以创建一个条件复选框循环,让我们说如果 checkbox1 为真,然后从现在(+ 50 分钟 n 重复)获取日期/时间,我想要一条消息弹出“XYZ”并确认确认,并每 50 分钟重复一次,直到 checkbox1 为 False。有人可以帮忙吗?谢谢。

标签: vba excel datetime subtraction


【解决方案1】:
format the x3 value

如下修改最后一行代码

TextBox4.Value = Format(X3, "hh:mm:ss")                                  

【讨论】:

  • 酷!那行得通。非常感谢迪内什。采用 Now 值有一种方法可以每 50 分钟创建一个消息弹出窗口,并以“Ok”作为确认。即让它根据复选框的条件创建弹出消息。如果可能,请告诉我。谢谢。
【解决方案2】:

没有解决您的主要查询,这似乎与格式化有关,但您应该在 IF 中使用多行块并使用 Else 而不是另一个 if!

Private Sub CheckBox1_Click()
X1 = Now
If CheckBox1.Value = True Then 
    TextBox1.Value = Now
     ' i dont think u need the following here but put here to show multi line if
     ' keepa  button to reset both text boxes
    TextBox2.Value = "00:00" 
elseif
     TextBox1.Value = Null
end if
 'keep in reset button click
'If CheckBox1.Value = False Then TextBox2.Value = Null
End Sub

参考http://www.techonthenet.com/excel/formulas/if_then.php

【讨论】:

  • 感谢 tgkprog 的简化表格 :)
  • 为什么这是 Elseif 而不是 Else?只能是真或假
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多