Excel VBA - 需要使用for循环,if语句和消息框构建一行代码的帮助

时间:2015-07-12 02:59:47

标签: excel vba excel-vba if-statement for-loop

我需要帮助构建一个代码,该代码基本上会显示一个消息框,该消息框将充当各种错误消息或通知消息。这是我想到的一个示例代码,我知道它可以工作但不完全是我正在寻找的输出

BeginPaint()

我知道这会工作并显示一个带有“今天没有数据!”字样的msgbox,但问题是,每当for循环进行另一次传递时,它将再次显示msgbox。我想要发生的是它应该只显示msgbox ONCE,并且只有在它检查了所有单元格并验证这些单元格上的数据不等于当前日期之后。

非常感谢任何帮助。 :)

编辑:

只是对我想要实现的目标的简要解释。所以基本上,我提供的代码检查A列的每一行,如果它内部的数据等于当前日期对吗?所以我想要发生的是,我不想检查该范围内的所有单元格并显示一个MsgBox IF NONE,该范围内的单元格等于当前日期,如果它们与当前日期相等,那么它不应该显示MsgBox。我尝试从@JGreenwell运行下面的代码,它确实显示了正确的MsgBox如果单元格范围内的所有数据都不等于当前日期,但是,如果我在当前日期的EQUAL范围内添加数据,即使至少有一个数据等于当前日期,它仍会显示msgbox。

我希望这比我原来的问题更清楚。我真的非常感谢你们告诉我的所有提示/建议和帮助。 :)

lr = Sheet1.Cells(Rows.Count, 1).End(xlUP).Row

for a = 1 to lr
   if Sheet1.Cells(a,1) = Date then 
      ` A whole new set of codes here that's not really an issue so i'll save time and just skip writing it down

   else MsgBox "No Data for Today!"
   end if
next a

2 个答案:

答案 0 :(得分:0)

lr = Sheet1.Cells(Rows.Count, 1).End(xlUP).Row

for a = 1 to lr
   if Sheet1.Cells(a,1) = Date then
      ` A whole new set of codes here that's not really an issue so i'll save time and just skip writing it down

   else 
       UnFound = 1
   end if
next a
If UnFound = 1 Then MsgBox "No Data for Today!"

答案 1 :(得分:0)

您可以设置标志,只需设置标志即可显示消息。

Dim dataFlag As Boolean
dataFlag = False 'create and set boolean type flag

for a = 1 to lr
    if Sheet1.Cells(a,1) = Date then
        ' A whole new set of codes here that's not really an issue so i'll save time and just skip writing it down

    else 
        dataFlag = True
    end if
next a

If dataFlag Then
    MsgBox "No Data for Today!"
End If

标志是一种标准编程实践,它允许条件算法(指令集)关联。对于您的情况,一个简单的布尔类型可以工作,但这也可以与其他数据结构和/或多个条件结合使用:比如设置一个标志根据标志包含的值,对多个值中的一个进行不同的操作。