Excel精英培训网

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

[已解决]关于VBA的小问题

[复制链接]
发表于 2011-12-20 10:18 | 显示全部楼层 |阅读模式
sub题目2的功能是选取A2:C12区域大于0的数字单元格所在的行。我编写的这个程序如果按逐语句运行则可以实现,但是如果直接运行就只选择最后一个符合条件单元格所在的行。麻烦各位高手指点指点看是出错在哪了,谢谢!

Sub 题目2()
    Dim x As Integer
    Dim y As Integer
    Dim rg As Range
   
        For x = 2 To 12 Step 1
            For y = 1 To 3 Step 1
                  If Cells(x, y) > 0 And IsNumeric(Cells(x, y)) Then
                     Set rg = Cells(x, y)
                     Set rg = Union(rg, Cells(x, y))
                  End If
            Next y
        Next x
     rg.EntireRow.Select
End Sub
最佳答案
2011-12-20 10:24
If rg Is Nothing Then
Set rg = Cells(x, y)
Else
Set rg = Union(rg, Cells(x, y))
End If
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-12-20 10:24 | 显示全部楼层    本楼为最佳答案   
If rg Is Nothing Then
Set rg = Cells(x, y)
Else
Set rg = Union(rg, Cells(x, y))
End If
回复

使用道具 举报

 楼主| 发表于 2011-12-20 10:34 | 显示全部楼层
搁浅2008 发表于 2011-12-20 10:24
If rg Is Nothing Then
Set rg = Cells(x, y)
Else

版主好,能讲解讲解一下吗?谢谢
回复

使用道具 举报

发表于 2011-12-20 10:39 | 显示全部楼层
是的   把原来的替换掉的   Set rg = Cells(x, y)每次运行它 就会变成一个单元格
回复

使用道具 举报

发表于 2011-12-20 10:45 | 显示全部楼层

  1. Sub 题目2()
  2.     Dim Rng As Range
  3.     Dim x As Range
  4.     For Each x In [a2:c12]
  5.         If IsNumeric(x) Then    '如果x是数字
  6.             If x > 0 Then
  7.                 If Rng Is Nothing Then
  8.                     '当 Rng 没引用任何实际对象时,将单元格 x 赋给变量 Rng
  9.                     Set Rng = x
  10.                 Else
  11.                     '当 Rng 引用了实际对象后,合并区域 Rng 与单元格 x
  12.                     Set Rng = Union(Rng, x)
  13.                 End If
  14.             End If
  15.         End If
  16.     Next x
  17.     Rng.EntireRow.Select
  18. End Sub
复制代码
学习搁浅的方法,练习下,多点印象
回复

使用道具 举报

 楼主| 发表于 2011-12-20 10:37 | 显示全部楼层
搁浅2008 发表于 2011-12-20 10:24
If rg Is Nothing Then
Set rg = Cells(x, y)
Else

是不是如果按照的我编写的这个程序,每次循环都重新给rg赋值,都把原有的覆盖掉了啊?
  If Cells(x, y) > 0 And IsNumeric(Cells(x, y)) Then
          Set rg = Cells(x, y)
          Set rg = Union(rg, Cells(x, y))
  End If

回复

使用道具 举报

 楼主| 发表于 2011-12-20 12:21 | 显示全部楼层
Select 发表于 2011-12-20 10:45
学习搁浅的方法,练习下,多点印象

非常感谢,可惜已经给过最佳,不能在给了。呵呵 !对了,你发的帖子里面的代码,有序号又有复制,怎么弄的啊
回复

使用道具 举报

发表于 2011-12-20 12:33 | 显示全部楼层
发帖或回帖时,在工具栏中,点这个图标"<>",再发帖。多44

回复

使用道具 举报

 楼主| 发表于 2011-12-20 12:35 | 显示全部楼层
,呵呵 谢谢,我也会了
回复

使用道具 举报

 楼主| 发表于 2011-12-20 12:35 | 显示全部楼层
Select 发表于 2011-12-20 12:33
发帖或回帖时,在工具栏中,点这个图标"",再发帖。多44

,呵呵 谢谢,我也会了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 12:49 , Processed in 0.320965 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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