If语句总是以一种状态结束



我有一个Excel电子表格,A列格式为日期03-Mar。如果输入了错误的月份,我正试图创建一个宏来显示消息框。

问题是消息框显示双向

Private Sub Worksheet_Change(ByVal Target As Range)
Dim M As String
Dim W As String
M = May
W = Apr
If ActiveCell = W Then
MsgBox ("Wrong Month entered")
Exit Sub
ElseIf ActiveCell = M Then
Exit Sub
End If
End Sub

MayApr被视为变量(它们是空的(。因此,您的代码无法工作。请确保使用Option Explicit,这将立即显示此类问题。

日期也以数字形式存储在Excel中。该数字是自1900-01-01以来的天数。所以今天是2022-03-07,Excel将其存储为44627,这意味着今天是自1900-01-01以来的44627天。因此,单元格中的实际值是44627,如果使用.NumberFormat对其进行格式化,Excel只会显示其他内容,如03-Mar,但单元格值仍然是一个数字。

因此,如果你想知道数字日期是哪个月,你可以使用Month()方法,因为May5,你可以很容易地测试它:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
' exit if more than one cell was changed
If Target.Cells.CountLarge > 1 Then Exit Sub
If Month(Target.Value) <> 5 Then  ' If month not may then messagebox
MsgBox "Wrong Month entered"
End If
End Sub

相关内容

  • 没有找到相关文章

最新更新