我正在尝试确定单元格$H$3
或单元格$H$4
的日期是否小于今天的日期,然后显示用户表单,否则请显示我的形状,如果这些单元格中的任何一个等于今天的日期,则出于某种原因只有单元格$H$3
和单元格$H$4
都具有值时,我的代码才能工作。这是我的代码:
Sub textbox96()
Dim ws As Worksheet
Set ws = Sheets("userform")
If (Len(Trim(ws.Range("H3").Value)) <> 0 And ws.Range("H3").Value < Date) Or IsEmpty(ws.Range("H3").Value) Or _
(Len(Trim(ws.Range("H4").Value)) <> 0 And ws.Range("H4").Value < Date) Or IsEmpty(ws.Range("H4").Value) Then
employeeselection.Show
ElseIf (Len(Trim(ws.Range("H3").Value)) <> 0 And ws.Range("H3").Value = Date) Or _
(Len(Trim(ws.Range("H4").Value)) <> 0 And ws.Range("H4").Value = Date) Then
ActiveSheet.Shapes("block").Visible = False
ActiveSheet.Shapes("TextBox 96").Visible = False
ActiveSheet.Shapes("group 151").Visible = False
ActiveSheet.Shapes("group 145").Visible = False
ActiveSheet.Shapes("group 133").Visible = False
ActiveSheet.Shapes("group 139").Visible = False
ActiveSheet.Shapes("group 127").Visible = False
End If
End Sub
答案 0 :(得分:2)
记住一个空白单元格还会为您提供True
的{{1}}。因此,您必须将其考虑在内
例如:
If ws.Range("H3") < Date
修改
@SiddharthRout由于某些原因,当我尝试输入代码时,我的形状不会隐藏
您尝试过这种方法吗?
If (Len(Trim(ws.Range("H3").Value)) <> 0 And ws.Range("H3").Value < Date) Or _
(Len(Trim(ws.Range("H4").Value)) <> 0 And ws.Range("H4").Value < Date) Then
End If
@SiddharthRout您的编辑对我有用!如果$ H $ 3或$ H $ 4为空,则有什么方法可以添加,那么employeeelection.show
If (Len(Trim(ws.Range("H3").Value)) <> 0 And ws.Range("H3").Value < Date) Or _
(Len(Trim(ws.Range("H4").Value)) <> 0 And ws.Range("H4").Value < Date) Then
'~~> Show userform
employeeselection.Show
ElseIf (Len(Trim(ws.Range("H3").Value)) <> 0 And ws.Range("H3").Value = Date) Or _
(Len(Trim(ws.Range("H4").Value)) <> 0 And ws.Range("H4").Value = Date) Then
'~~> Hide shapes here
End If
答案 1 :(得分:0)
使用 IsDate 功能解决问题。如果ws.Range(“ H4”)。Value为Null / Empty,则IsDate将返回false。
Sub textbox96()
Dim ws As Worksheet
Set ws = Sheets("userform")
' MsgBox IsDate(ws.Range("H3").Value)
' MsgBox IsDate(ws.Range("H4").Value)
'MsgBox (IsDate(ws.Range("H3").Value) And IsDate(ws.Range("H4").Value))
'If (IsDate(ws.Range("H3").Value) And (Not IsDate(ws.Range("H4").Value))) Then
If ws.Range("H3").Value < Date Or (Not IsDate(ws.Range("H4").Value)) Then
employeeselection.Show
Else
If ws.Range("H3").Value >= Date Or (Not IsDate(ws.Range("H4").Value)) Then
ActiveSheet.Shapes("block").Visible = False
ActiveSheet.Shapes("TextBox 96").Visible = False
ActiveSheet.Shapes("group 151").Visible = False
ActiveSheet.Shapes("group 145").Visible = False
ActiveSheet.Shapes("group 133").Visible = False
ActiveSheet.Shapes("group 139").Visible = False
ActiveSheet.Shapes("group 127").Visible = False
End If
End If
'Else
' MsgBox "Here"
'End If
End Sub