【问题标题】:How to complete a while loop in Excel如何在 Excel 中完成 while 循环
【发布时间】:2022-11-03 13:32:20
【问题描述】:

我想知道您是否可以帮助我完成我正在为 Excel 工作表设计的这个宏。我正在尝试创建一个宏,该宏在选中复选框时选择然后循环选定单元格的颜色。我在下面包含了当前代码,但我已经尝试了各种循环,包括 While...Wend。我可能已经完成了这些错误,所以这些选项可能仍然有效。任何帮助将不胜感激。

谢谢

Sub Disco_Mode()
    '
    ' Disco_Mode Macro
    ' Activates disco mode for this worksheet.
    '
      
    '
    Range( _
        "31:1048576,J29:XFD30,U26:XFD28,J26:K28,A26:C30,22:25,O15:XFD21,A15:C21,12:14,W3:XFD11,A3:C11,1:2" _
        ).Select
    Range("A1").Activate
    Dim isOn As Boolean
    isOn = 1
    Dim volor As Integer
    volor = 0
    Do Until False
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = volor
            .TintAndShade = 0
            .PatternTintAndShade = 0
            Application.Wait (Now + TimeValue("0:00:1"))
    End If
    End Function
    End With
        
    Range("A1").Select
    End Sub

【问题讨论】:

  • 您是否真的尝试过阅读 MS 帮助页面以了解 if then else endif、with、end with、for do 循环等
  • 是的,我有,我仍然无法让它工作。
  • 我建议你再读一遍。如果没有匹配的if,则无法结束。 do until 和 end 函数的类似观察。您也不能重叠块。例如 with ... If...end if... End with, not with ... If...end with...end if。
  • 我仍在努力让它发挥作用。
  • 那么布尔值有两个值“真”和“假”。如果必须,VBA 可以进行真实的转换,但最好使用正确的值。尝试仅使用您的第一个范围语句的子程序,您会收到错误吗?当您的前两个范围语句仅在子中时会发生什么。第一个范围是否仍然被选中?还有很多要评论的,但这只是表明您所做的研究很少。

标签: excel vba


【解决方案1】:

通常,while 循环的工作方式如下:

while condition do:
  ...
  if ... then condition=false;
wend

或者(对于 do ... until 循环):

Do until condition:
...
if ... then condition=true;

另一种方法是:

while (true)
  ...
  if ... then break;
wend

但是,这在 Excel VBA 中不起作用(它更像是一种 C/C++ 工作方式:break 导致退出循环)。

因此,我不建议您使用Do ... Until False 并将其替换为Do ... Until condition,其中条件在循环中设置。

【讨论】:

    猜你喜欢
    • 2021-08-20
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 2019-04-09
    • 2013-07-12
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多