Excel VBA - For Each - In&端(xltoright)

时间:2015-02-08 18:21:46

标签: excel-vba vba excel

所以这就是我到目前为止所得到的:

Sub SortByGen()
Dim Gen As Range

For Each Gen In Worksheets("Sheet1").Range("B3:G3")
    If Gen.Value = "XXX" Then
        Gen.EntireColumn.Copy _
            Worksheets("XXX").Range("A2").End(xlToRight).Offset(0, 1).EntireColumn
     If Gen.Value = "YYY" Then
        Gen.EntireColumn.Copy _
            Worksheets("YYY").Range("A2").End(xlToRight).Offset(0, 1).EntireColumn
    End If
Next Gen

End Sub

我正在尝试根据特定条件将某些列从一个工作表排序到多个工作表。我不小心把价值放在

Worksheets("XXX").Range("B2") and Worksheets("YYY").Range("B2")

所以当

.end(xltoright) 

跑了,代码工作了。现在,当我试图摆脱B2中的值时,代码将出错。

1 个答案:

答案 0 :(得分:1)

如果您使用xlToRight,并且您从该行中最后一个被占用的单元格开始,那么它将转到该行的最后:您不能从那里再偏移一列... < / p>

请改用:

Gen.EntireColumn.Copy _
Worksheets("XXX").Cells(2, Columns.Count).End(xlToLeft).Offset(0, 1).EntireColumn