Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 884|回复: 8

[已解决]for循环运行不畅求解(曾经问过但没有解决问题)

[复制链接]
发表于 2022-9-26 22:17 | 显示全部楼层 |阅读模式
我在for循环中添加了跳转语句,有时可以顺畅运行,有时不能运行但不报错,不知是啥原因。
语句如下:
Sub aa()
Dim x%, y%
Line:
      For x = 1 To 56
         For y = 1 To 56
            If x = yThen
              Cells(x, y).Interior.ColorIndex = WorksheetFunction.RandBetween(1, 56)
              Cells(x, 57 - y).Interior.ColorIndex = WorksheetFunction.RandBetween(1,56)
            End If
         Next y
      Next x
      GoTo Line
End Sub

2022-09-26_220746.jpg 工作簿1.rar (13.02 KB, 下载次数: 2)
发表于 2022-9-27 07:39 | 显示全部楼层
本帖最后由 我行我速2008 于 2022-9-27 07:41 编辑

感觉没必要跳转,也没必要设变量y。
Sub aa()
Dim x%
      For x = 1 To 56
              Cells(x, x).Interior.ColorIndex = WorksheetFunction.RandBetween(1, 56)
              Cells(x, 57 - x).Interior.ColorIndex = WorksheetFunction.RandBetween(1,56)
      Next x
End Sub
回复

使用道具 举报

发表于 2022-9-27 07:40 | 显示全部楼层
感觉没必要跳转,也没必要设变量y。
Sub aa()
Dim x%
      For x = 1 To 56
              Cells(x, x).Interior.ColorIndex = WorksheetFunction.RandBetween(1, 56)
              Cells(x, 57 - x).Interior.ColorIndex = WorksheetFunction.RandBetween(1,56)
      Next x
End Sub
回复

使用道具 举报

发表于 2022-9-27 10:50 | 显示全部楼层
这 无条件的 Goto, 死循环啊, 靠机器自我察觉, "不行,  我有点晕, 得歇会儿"
回复

使用道具 举报

发表于 2022-9-27 11:09 | 显示全部楼层
本帖最后由 hcm19522 于 2022-9-27 11:16 编辑

範圍 30格  A1:AD (白色字 按F4就變)=RANDBETWEEN(1,9)*((ROW()-COLUMN()=0)+(ROW()+COLUMN()=31))

格式化 黃色=A1=1
格式化 紅色=A1=2
格式化 綠色=A1=3
格式化 藍色=A1=4
格式化 紫色=A1=5
格式化 橘色=A1=6
格式化 黑色=A1=7
10551.png
回复

使用道具 举报

 楼主| 发表于 2022-9-27 21:08 | 显示全部楼层
砂海 发表于 2022-9-27 10:50
这 无条件的 Goto, 死循环啊, 靠机器自我察觉, "不行,  我有点晕, 得歇会儿"

能运行,不是死循环。
回复

使用道具 举报

 楼主| 发表于 2022-9-27 21:10 | 显示全部楼层
hcm19522 发表于 2022-9-27 11:09
範圍 30格  A1:AD (白色字 按F4就變)=RANDBETWEEN(1,9)*((ROW()-COLUMN()=0)+(ROW()+COLUMN()=31))

格式 ...

我的问题是:有时该程序可以顺利执行有时只能运行几秒,想知道原因。
回复

使用道具 举报

 楼主| 发表于 2022-9-27 21:14 | 显示全部楼层
我行我速2008 发表于 2022-9-27 07:40
感觉没必要跳转,也没必要设变量y。
Sub aa()
Dim x%

是可以不设置变量y。我的要求是不断进行动态填色,所以需要进行跳转。就是在这种跳转中程序有时可以一直运行下去,有时却不行,代码也不显示错误。想知道这是为什么。

回复

使用道具 举报

发表于 2022-9-27 23:56 | 显示全部楼层    本楼为最佳答案   
ccq000000 发表于 2022-9-27 21:08
能运行,不是死循环。

楼上说的没错,死循环,本质上就是do loop的翻版,你想要的应该是附件上的效果吧
Sub test()
    Dim i%
    For i = 1 To 56
        Cells(i, i).Interior.ColorIndex = Application.RandBetween(1, 56)
        Cells(i, 57 - i).Interior.ColorIndex = Application.RandBetween(1, 56)
    Next
    Application.OnTime Now + TimeValue("00:00:01"), "test"
End Sub

下拉.gif
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 15:47 , Processed in 0.367530 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表