Excel精英培训网

 找回密码
 注册
查看: 1506|回复: 2

[无附件] 请指点循环变量的问题

[复制链接]
发表于 2019-12-16 08:56 | 显示全部楼层 |阅读模式
Sub 数组方法2()
Dim arr, t
Dim x As Integer, x1 As Integer
Dim sr As String, sr1 As String
清除颜色
t = Timer
arr = Range("d2:d" & Range("a65536").End(xlUp).Row)
For x = 1 To UBound(arr)
   If x = UBound(arr) Then Range(Left(sr, Len(sr) - 1)).Interior.ColorIndex = 3
   If arr(x, 1) > 500 Then
      sr1 = sr
      x1 = x + 1
      Do
        x = x + 1
      Loop Until arr(x, 1) <= 500

      sr = sr & "A" & x1 & ":D" & x & ","
      If Len(sr) > 255 Then
        sr = sr1
        x = x1 - 1
        Range(Left(sr, Len(sr) - 1)).Interior.ColorIndex = 3
        sr = ""
      End If
     x = x - 1
   End If
Next x
MsgBox Timer - t
请教下
假定当For循环进行第400次循环(即X=400时),If arr(x, 1) > 500条件为真时X1=X+1=400+1=401,If Len(sr) > 255 条件为真时X=X1-1=401-1=400,当X=X1-1执行完后再执行x = x - 1时x = x - 1=400-1=399.这样For循环就会进行死循环,但是我运行代码时没出现问题请前辈再指点下我的疑问
发表于 2019-12-16 13:38 | 显示全部楼层
len是判断字符串长度的,你这个满足If arr(x, 1) > 500 后字符长度最多增加14。
要满足255即使你数据再复杂也要个36行吧,所以没有陷入你想的那个死循环。
最好上传附件,你这样不好判断具体情况,没有多少人会回复
回复

使用道具 举报

发表于 2019-12-16 15:05 | 显示全部楼层
http://www.excelpx.com/thread-149787-1-1.html
建议上传附件,并具体说明题意。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 22:26 , Processed in 0.233769 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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