我找遍了所有地方,却没有找到可以帮助我的东西。
这是我的问题:
我需要用两个滑块设置日期范围。一个滑块设置检查期间的开始日期,第二个滑块设置结束日期。这本身不是问题,但我需要验证它。例如,当用户想要将开始日期设置为晚于结束日期(或反之亦然)时,程序不应该让他/她这样做。
到目前为止我已经尝试过:
一个简单的验证列表就好了。我可以从其他列表中选择日期以使用这些值。但我需要使用一个滚动列表,其中每次显示一个值并带有两个箭头,而不是下拉列表。
我尝试在显示日期的单元格上设置验证,但它只有在我手动输入时才有效,并且不会对滑块给定的值做出反应。
我曾尝试设置一个宏,将起始日期设置器滚动的最大值设置为结束日期设置器滚动的值,但我失败了(我认为答案比这简单得多)。
我甚至使用过 IF (=IF(A2>A1;A1;"ERROR")),但同样:这并不能阻止用户输入错误的数据。而且滑块的实际值仍然可以增加,所以如果我想纠正自己并降低其值,我可能不得不多次按下它。
答案1
您可以为每个滚动条分配一个宏,用于检查结束日期是否为有效日期。对两个滚动条使用相同的宏。在此代码示例中,C3 具有开始日期,G3 具有结束日期。每当结束日期早于开始日期时,宏都会弹出一条消息,然后将结束日期设置为等于开始日期。
Sub ScrollBar_Change()
Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets("Sheet1")
If ws.Range("G3") < ws.Range("C3") Then
MsgBox "End date cannot be earlier than Start Date. Adjusting End date"
ws.Range("G3") = ws.Range("C3")
End If
End Sub