Excel精英培训网

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

VBA80集第24集答疑专贴

  [复制链接]
发表于 2011-8-9 13:23 | 显示全部楼层 |阅读模式
本帖最后由 兰色幻想 于 2011-8-9 13:24 编辑

       第24集代码比较复杂,如果你有不懂的地方,可以跟贴提问。
       注:本贴只回答和第24集有关的内容。
             (视频下午3点左右发布)

评分

参与人数 1 +9 收起 理由
windimi007 + 9 兰版辛苦了~~~周末看完后有不懂就来问!

查看全部评分

发表于 2011-8-9 19:32 | 显示全部楼层
  sr = sr & x1 & ":" & x & ","
可以这样表示吗 sr =  x1 & ":" & x & ","
为什么一定要加”sr“

点评

加上sr等于在原来的基础上再连接新的地址  发表于 2011-8-10 22:41
回复

使用道具 举报

发表于 2011-8-9 19:41 | 显示全部楼层
通过本地窗口,看到了效果
sr = sr & x1 & ":" & x & ","
是将不断累加的字符串连接起来

2011-08-09_194050.gif
回复

使用道具 举报

发表于 2011-8-10 17:24 | 显示全部楼层
请教老师,关于数组2中的疑问:
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
以上代码的倒数第二句,是不是应该可以去除或者改成x=x+1,
还是以视频中讲到的15行到18行进行说明,在上面的Do循环中,当x=18也就是第19行数据时,结束了DO循环,内存中放的X就等于18,且arr(18,1)本身就是不符条件的,
如x=x-1,则x等于17,arr(17,1)是符合条件的了,所以觉得是不是可以去除这句,或者加1,因为arr(18,1)本身不符合条件可以跳过这一行。
不知道理解的对不对,请老师指教。

点评

正在因为17大于500了,但它的总长度超过了255,所以下次重新连接时还要从17开始,所以X倒减1才会重新从17开始判断,否则就错过了17  发表于 2011-8-10 22:43
回复

使用道具 举报

发表于 2011-8-12 17:55 | 显示全部楼层
请问老师 怎样下载  怎样获取金币啊
谢谢

回复

使用道具 举报

发表于 2012-4-23 21:11 | 显示全部楼层
是的,倒回来,Range(Left(sr, Len(sr) - 1)).Interior.ColorIndex = 3,为什么不是Range(“Left(sr, Len(sr) - 1”)).Interior.ColorIndex = 3
回复

使用道具 举报

发表于 2012-6-6 17:31 | 显示全部楼层
      Do
        x = x + 1
      Loop Until arr(x, 1) <= 500
这个x好像会大于UBound(arr)
我怎么感觉最后一行没有进行判断运算!且最后一行大于500程式会报警!求解!
回复

使用道具 举报

发表于 2012-6-17 12:32 | 显示全部楼层
请教一下兰老师,如果是想要对以文本形式存在的数字区域进行格式转换(快捷方式为复制数字1,然后选定需要转换为数值的文本“选择性粘贴”“乘”)又该如何写呢?列数固定,行数未知
回复

使用道具 举报

发表于 2012-7-4 18:08 | 显示全部楼层
libo02071027 发表于 2012-6-6 17:31
Do
        x = x + 1
      Loop Until arr(x, 1)

arr = Range("d2:d" & Range("a65536").End(xlUp).Row + 1) 应该在这里加1,这样当最后一行大于500进行判断的时候就不会越界了
回复

使用道具 举报

发表于 2012-11-26 16:35 | 显示全部楼层
panan123_0 发表于 2011-9-27 21:31
Sub 数组方法()
Dim arr, t
Dim x As Integer


一年前您就开始学习了。。太厉害了。。。我现在刚学,也发现这种方法会是漏掉一个,而后面的两种方法对此都有解决方法。。我也想了半天,准备发个贴,问下了,看到您的帖子,不用发了。解决了。。呵呵。兰版的小失误。。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 14:26 , Processed in 0.880978 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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