消息框基于不同的标准出现

时间:2015-07-08 09:41:45

标签: excel excel-vba formatting vba

我有一些复杂的Excel格式要做,但我不知道从哪里开始。

需要满足的标准很少:

  1. 当F3和H3中有单元格值时,单元格N4的时间应自动为N3中的时间加上3小时。
  2. enter image description here

    1. 如果系统时间超过N4中的值,并且F4和H4中的值仍为空,则会触发消息或格式突出显示以通知用户时间结束。
    2. enter image description here

      1. 如果在B栏中创建了新浴室,则N列中的时间将停止添加时间,并且只留空以供用户在新时间内键入。
      2. enter image description here

1 个答案:

答案 0 :(得分:0)

对于1.& 3.,你只需使用if公式:

=IF(AND(F3<>"",H3<>"",B3=B4),N3+3/24,"")

这假设N3中的值是一个时间值,否则它会变得有点棘手 - 但几乎不可能。

你的问题陈述没有。 2有点棘手,我不认为你可以没有VBA,而且代码并不完全是直截了当的。但是,我会试一试。在类似的工作簿中,我有一行向前移动以指示何时需要完成不同的任务。为了让“线”移动,我使用条件格式在一列单元格中着色,将单元格列与我在Y29中的时间戳进行比较。我用来更新时间戳的代码如下,它每分钟更新一次单元格:

在标准模块中

Option Explicit

Public setDate As Date

Public Const nameToIgnore = "OAA0006Monitor"

Sub UpdateTime()
    If currentUser() = nameToIgnore Then
    Else
      setDate = Now() + TimeValue("00:01:00")
      Application.OnTime setDate, "TimeUp"
    End If
End Sub

Sub TimeUp()

  If currentUser() = nameToIgnore Then
  Else
    ThisWorkbook.Worksheets("ArbPlan 2011 (5)").Range("Y29") = Time

    UpdateTime
  End If
End Sub

Sub KillOnTime()
  If currentUser() = nameToIgnore Then
  Else
    On Error Resume Next
    Application.OnTime setDate, "TimeUp", , False
    On Error GoTo 0
  End If
End Sub

ThisWorkbook - 模块

Option Explicit

Private Sub Workbook_Activate()
    UpdateTime
End Sub

Private Sub Workbook_Deactivate()
    KillOnTime
End Sub

我认为这不应该很难转换为您想要的目的,而不是使用条件格式,您甚至可以让代码为您执行所有格式化! :)

无论如何,我希望这给你一个很好的起点,如果你觉得有什么不清楚,或者你无法理解代码的任何逻辑,请随时发表评论。