ls 发表于 2012-3-20 08:56

Dim x As Integer, m%
Dim arr() As Variant
Private Sub CommandButton1_Click()
    For x = 2 To Cells(Rows.Count, 4).End(3).Row
      If Range("d" & x).Value > 20 Then
      m = m + 1
      ReDim Preserve arr(1 To m)
      arr(m) = "d" & x
      End If
    Next
Range(Join(arr, ",")).EntireRow.Select
End Sub
Private Sub CommandButton2_Click()
Dim rng As Range, x&
    For x = 2 To Cells(Rows.Count, 4).End(3).Row
      If Range("d" & x).Value > 20 Then
            If rng Is Nothing Then Set rng = Rows(x) Else Set rng = Union(rng, Rows(x))
      End If
    Next
If Not rng Is Nothing Then rng.Select
End Sub


janne.71 发表于 2012-3-20 12:18

老师辛苦了

hshmichael 发表于 2012-3-20 14:05

Sub union方法()
Dim i%, rg As Range
For i = 2 To Range("d65536").End(xlUp).Row
   If Range("d" & i) > 20 And rg Is Nothing Then
       Set rg = Rows(i)
    ElseIf Range("d" & i) > 20 Then
       Set rg = Union(rg, Rows(i))
    End If
Next i
rg.Select
Set rg = Nothing
End Sub

tcn541 发表于 2012-3-20 19:39

Sub 方式1()
Range("a3:d3,a5:d5.a10:d11").Select

End Sub
Sub 方式2()
Union(Range("a3:d3"), Range("a5:d5"), Range("a10:d11")).Select

End Sub

szczm121 发表于 2012-3-20 22:12

谢谢校长给我鼓励

w2001pf 发表于 2012-3-21 11:48

H07:w2001pf

Option Explicit


Sub 选取1()
Dim rg As Range, x As Integer
      For x = 2 To Range("a65536").End(xlUp).Row
      If Range("D" & x) > 20 Then
            If rg Is Nothing Then
                Set rg = Rows(x)
            Else
                Set rg = Union(rg, Rows(x))
            End If
      End If
         Next x
      rg.Select
End Sub
Sub 选取2()
Dim sr As String, x As Integer
      For x = 2 To Range("a65536").End(xlUp).Row
      If Range("D" & x) > 20 Then
            If sr <> "" Then
               sr = sr & "," & x & ":" & x
            Else
               sr = x & ":" & x
            End If
      End If
         Next x
   Range(sr).Select
End Sub
Sub 选取3()
Dim sr As String, x As Integer, k
    For x = 2 To Range("a65536").End(xlUp).Row
      k = x
      If Range("D" & x) > 20 Then
            Do While Range("D" & x) > 20
                x = x + 1
            Loop
               sr = sr & k & ":" & x - 1 & ","
      End If
      
    Next x
    sr = Left(sr, Len(sr) - 1)
   Range(sr).Select
End Sub

dsjohn 发表于 2012-3-21 17:06

Dim x As Long
For x = 2 To 11
If Range("d" & x) > 20 Then
    If rg Is Nothing Then
      Set rg = Rows(x)
    Else
      Set rg = Union(rg, Rows(x))
    End If
End If
Next x
    rg.Select
End Sub
Sub 选取行2()
Dim rg As String
Dim x As Long
For x = 2 To 11
    If Range("d" & x) > 20 Then
      If rg = "" Then
            rg = x & ":" & x
      Else
            rg = rg & "," & x & ":" & x
      End If
    End If
Next x
    Range(rg).Select
End Sub

shengxudong 发表于 2012-3-21 22:53

补交作业来罗。
Option Explicit
Sub RAGNE方法2()
'这个是我在群内学友提醒用拼装字符方法的提示下自己想出来的,又根据校长的第三种方法改编的
Dim x As Integer
Dim y As Integer, k As Integer
Dim dz As String
    y = 4
    dz = ""
    For x = 2 To 24
      k = x
      If Cells(x, y).Value > 20 Then
         Do While Cells(x, y).Value > 20
            x = x + 1
         Loop
            If dz = "" Then
               dz = k & ":" & x - 1 & ","
            Else
               dz = dz & k & ":" & x - 1 & ","
            End If
      End If
    Next x
    dz = Left(dz, Len(dz) - 1)
    Range(dz).Select
   ' Cells(1, 6).Value = dz
End Sub
Sub RAGNE方法()
'这个是我在群内学友提醒用拼装字符方法的提示下自己想出来的
Dim x As Integer
Dim y As Integer
Dim dz As String
    y = 4
    dz = ""
    For x = 2 To 24
      If Cells(x, y).Value > 20 Then
            dz = dz & x & ":" & x & ","
      End If
    Next x
    dz = Left(dz, Len(dz) - 1)
    Range(dz).Select
   ' Cells(1, 6).Value = dz
End Sub
Sub union2方法()
'这个是抄来的,根据校长的第三种方法修改了
Dim x As Integer, k As Integer
Dim rg As Range
    For x = 2 To Range("d" & Rows.Count).End(xlUp).Row
      k = x
    If Cells(x, 4) > 20 Then
      Do While Cells(x, 4).Value > 20
            x = x + 1
            If rg Is Nothing Then
                Set rg = Rows(k & ":" & x - 1)
            Else
                Set rg = Union(rg, Rows(k & ":" & x - 1))
            End If
      Loop
    End If
    Next x
    rg.Select
End Sub
Sub union1方法()
Dim x As Long
Dim rg As Range
    For x = 2 To Range("d" & Rows.Count).End(xlUp).Row
    If Cells(x, 4) > 20 Then
      If rg Is Nothing Then
            Set rg = Rows(x)
      Else
            Set rg = Union(rg, Rows(x))
      End If
    End If
    Next x
    rg.Select
End Sub

bl5062 发表于 2012-3-22 16:05

Sub aaaa()
    Dim i As Long
    Dim s As String
    s = ""
    For i = 2 To 11
      s = s & IIf(Cells(i, 4) > 20, i & ":" & i & ",", "")
    Next i
    s = Left(s, Len(s) - 1)
    Range(s).Select
End Sub
Sub cccc()
    Dim i As Long
    Dim buf As Range
    Set buf = Range("a1")
    For i = 2 To 11
      If Cells(i, 4) > 20 Then
            If buf.Address = "$A$1" Then Set buf = Cells(i, 4)
            Set buf = Union(Cells(i, 4), buf)
      End If
    Next i
    buf.EntireRow.Select
End Sub

laoau126 发表于 2015-6-14 15:51

5222002
页: 1 2 3 4 [5] 6
查看完整版本: 统计VBA学习小组正式组第九课(第十一讲)的积分帖之作业上交贴(第12周)