Adding an Offset Row to a Given Range. Excel VBA

前端 未结 2 874
傲寒
傲寒 2021-01-07 00:10

I have a variable which at the beginning is set to a given range.

I want to have a loop statement that would take the next row down from the end of the given range a

相关标签:
2条回答
  • 2021-01-07 00:45

    You may also use

    Set myRows = Union(myRows, myRows.Offset(1, 0))
    

    EDIT:

    You asked for it!

    To remove one row from generic range

    Set myRows = RemoveRowFromRange(myRows, 10)
    
    ...
    
    Function RemoveRowFromRange(ByVal Range As Range, row_number As Long) As Range
        With Range.Worksheet
            Select Case row_number
            Case 1
                Set Range = Intersect(Range, .Range(.Rows(2), .Rows(.Rows.Count)))
            Case .Rows.Count
                Set Range = Intersect(Range, .Range(.Rows(1), .Rows(.Rows.Count - 1)))
            Case Else
                Set Range = Union(Intersect(Range, .Range(.Rows(1), .Rows(row_number - 1))), Intersect(Range, .Range(.Rows(row_number + 1), .Rows(.Rows.Count))))
            End Select
        End With
        Set RemoveRowFromRange = Range
    End Function
    
    0 讨论(0)
  • 2021-01-07 00:58

    You have myRows as a Variant data type. You need to declare it as a Range object.

    Dim myRows as Range

    Then you would need to use the Set keyword to assign a Range object).

    Set myRows = Range("1:10")

    Then, use the range .Resize method:

    Set myRows = myRows.Resize(myRows.Rows.Count+1, myRows.Columns.Count)

    Otherwise, if you need to maintain myRows as type Variant, let me know and I can re-work this.

    0 讨论(0)
提交回复
热议问题