将范围变量分配给当前单元格的行

时间:2016-04-20 20:22:21

标签: excel vba

我很难将活动单元格行的范围分配给范围变量。当我尝试在范围函数调用中复制此变量时,我得到"方法范围的对象全局失败"错误。有什么提示吗?

Sub GroupLanes()
Dim Origin, Destination, ODPair As String
Dim mainWorkbook As Workbook
Dim Index As Long
Dim IB, OB As Range

Set mainWorkbook = ActiveWorkbook
Index = 6

Range("G" & Index).Select
Origin = ActiveCell.Value

Debug.Print Origin

Range("H" & Index).Select
Destination = ActiveCell.Value

Debug.Print Destination

Range("AV" & Index).Select
ODPair = ActiveCell.Value

Debug.Print ODPair

Do Until IsEmpty(ActiveCell)

    Set IB = ActiveCell.EntireRow

    Range("AV6").Select
    ODPair = ActiveCell.Value

    Do Until IsEmpty(ActiveCell)

        If (Mid(ODPair, 1, 5) = Destination And Mid(ODPair, 6, 5) = Origin) Then
            Set OB = ActiveCell.EntireRow

            Range(IB).Copy
            Sheets("Sheet2").Range("A" & Index & ":" & "AV" & Index).PasteSpecial xlPasteValues

            Range(OB).Copy
            Sheets("Sheet2").Range("A" & Index & ":" & "AV" & Index).PasteSpecial xlPasteValues

            ActiveCell.Offset(1, 0).Select
            ODPair = ActiveCell.Value
        Else
            ActiveCell.Offset(1, 0).Select
            ODPair = ActiveCell.Value
            Debug.Print ODPair
        End If

    Loop

    Index = Index + 1

    Range("G" & Index).Select
    Origin = ActiveCell.Value

    Range("H" & Index).Select
    Destination = ActiveCell.Value

LoopEnd Sub

1 个答案:

答案 0 :(得分:1)

变化:

Range(IB).Copy

IB.Copy

IB已经是Range(有点,见下文)所以当你在范围函数中调用它时,它正在寻找一个名称等于&#的范围&# 39;在你的床单上的IB。

除了Scott关于SelectActivate的提示外,请注意

Dim IB, OB As Range

将OB声明为范围,就像您想要的那样,但将IB声明为Variant。有关详细信息,请参阅此Chip Pearson page并向下滚动到"注意使用一个Dim声明声明的变量。"