Excel精英培训网

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

[已解决]同时选择多行。

[复制链接]
发表于 2017-1-11 10:49 | 显示全部楼层 |阅读模式
Sub sdfsdf()
Dim a(1 To 10000)
aaa = 1
Aff = Sheets("监基压").Range("A1:n" & Sheets("监基压").Range("A65536").End(3).Row)
    For i = 25 To UBound(Aff) Step 25
      If Sheets("监基压").Cells(i + 4, 10) = Sheets("监基压").Cells(i - 25 + 4, 10) And Sheets("监基压").Cells(i + 4, 12) = Sheets("监基压").Cells(i - 25 + 4, 12) Then
      a(aaa) = i
      aaa = aaa + 1
      End If      
        Next上面不用看

        For i = 1 To aaa
        Sheets("监基压").Rows(a(i)).Select
        怎么把a(i)数组里所有行号同时选择上
        Next

End Sub
最佳答案
2017-1-11 11:17
  1. Sub test()
  2.     Dim rng As Range
  3.     arr = Array(1, 3, 5, 7, 9, 25, 99)
  4.     For i = 1 To UBound(arr)
  5.         If Not rng Is Nothing Then
  6.             Set rng = Union(rng, Rows(arr(i)))
  7.         Else
  8.             Set rng = Rows(arr(i))
  9.         End If
  10.     Next
  11.     rng.Select
  12. End Sub
复制代码
瞎写的示例,可能不是你想要的,感觉你想得好高端
发表于 2017-1-11 10:57 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2017-1-11 11:08 | 显示全部楼层
望帝春心 发表于 2017-1-11 10:57
得用UNION连上才能多选吧

Union必须两个参数但数组付值,只能付一个
不可能把所有数组手动例出来,那就失去VBA的意义了
回复

使用道具 举报

发表于 2017-1-11 11:10 | 显示全部楼层
kmcla 发表于 2017-1-11 11:08
Union必须两个参数但数组付值,只能付一个
不可能把所有数组手动例出来,那就 ...

嗯,你是对的{:1112:}
回复

使用道具 举报

发表于 2017-1-11 11:17 | 显示全部楼层    本楼为最佳答案   
  1. Sub test()
  2.     Dim rng As Range
  3.     arr = Array(1, 3, 5, 7, 9, 25, 99)
  4.     For i = 1 To UBound(arr)
  5.         If Not rng Is Nothing Then
  6.             Set rng = Union(rng, Rows(arr(i)))
  7.         Else
  8.             Set rng = Rows(arr(i))
  9.         End If
  10.     Next
  11.     rng.Select
  12. End Sub
复制代码
瞎写的示例,可能不是你想要的,感觉你想得好高端
回复

使用道具 举报

发表于 2017-1-11 11:21 | 显示全部楼层
把arr换成你的a就行了

评分

参与人数 1 +1 收起 理由
kmcla + 1 你是天才

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-1-11 12:52 | 显示全部楼层
望帝春心 发表于 2017-1-11 11:21
把arr换成你的a就行了

成功

Private Sub CommandButton1_Click()
    Dim a(1 To 10000)
    Dim rng As Range
    Application.DisplayAlerts = False
    Sheets("基压").Activate
    Sheets("基压").Rows("1:" & Sheets("基压").Range("A65536").End(3).Row).Select
    Sheets("基压").Rows("1:" & Sheets("基压").Range("A65536").End(3).Row).Copy
    Sheets("监基压").Activate
    Sheets("监基压").Rows("1:" & Sheets("监基压").Range("A65536").End(3).Row).Select
    Sheets("监基压").Rows("1:" & Sheets("监基压").Range("A65536").End(3).Row).PasteSpecial xlPasteAll
    aaa = 1
    Aff = Sheets("监基压").Range("A1:n" & Sheets("监基压").Range("A65536").End(3).Row)
    For i = 25 To UBound(Aff) Step 25
        If Aff(i + 4, 10) = Aff(i - 25 + 4, 10) And Aff(i + 4, 12) = Aff(i - 25 + 4, 12) Then
            a(aaa) = i
            aaa = aaa + 1
        End If
    Next
    For i = 1 To UBound(a)
        If Not rng Is Nothing Then
            Set rng = Union(rng, Rows(a(i) + 1 & ":" & a(i) + 25))
        Else
            Set rng = Rows(a(i) + 1 & ":" & a(i) + 25)
        End If
    Next
    rng.Delete
    Application.DisplayAlerts = True
End Sub


回复

使用道具 举报

发表于 2017-1-11 12:55 | 显示全部楼层
kmcla 发表于 2017-1-11 12:52
成功

Private Sub CommandButton1_Click()

成功了就好,有帮助就评下最佳吧

评分

参与人数 1 +1 收起 理由
kmcla + 1 为什么第一行,无论什么情况都会选上,怎么.

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-1-12 17:52 | 显示全部楼层
望帝春心 发表于 2017-1-11 12:55
成功了就好,有帮助就评下最佳吧

为什么第一行,无论什么情况都会选上,怎么排除?
回复

使用道具 举报

发表于 2017-1-12 18:36 | 显示全部楼层
kmcla 发表于 2017-1-12 17:52
为什么第一行,无论什么情况都会选上,怎么排除?

按F8一步一步去调试吧
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 04:03 , Processed in 0.392198 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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