2013-07-10 2 views
1

Приведенный ниже код дает ошибку, но когда я меняю диапазон на .Range(A2:A9999), он работает ...Excel VBA on Range Error - Quick Fix?

Но это некрасиво. Есть ли способ захватить все данные в столбце (A) из A2 и ниже? и скопировать это в B2?

Sheets("AA").Range("A2:A").Value = Sheets("BB").Range("B2:B").Value 
+2

Вы также заявляете, что хотите скопировать из A в B, но ваш код пытается скопировать из B в A. –

ответ

0

Чтобы иметь это в одной строке вы можете сделать это следующим образом:

Sheets("AA").Range("A2", Cells(Rows.Count, "A")).Copy Sheets("BB").Range("B2") 

Кстати, он копирует все, а не только значения, но и форматирование. Чтобы запустить его, ваш лист AA должен быть активным.

+0

Отлично! спасибо – GimGanDi

1

Найдя последнюю заполненную ячейку в столбце A, вы можете быть более точным в том, что вы копируете.

Это копирует содержимое столбца A на листе Src в колонке B из TGT листа:

Sub CopyOneColumnToAnother() 
    Dim wb As Workbook 
    Dim src As Worksheet 
    Dim tgt As Worksheet 
    Dim lastRow As Long 

    Set wb = ThisWorkbook 
    Set src = wb.Sheets("Sheet5") 
    Set tgt = wb.Sheets("Sheet6") 
    lastRow = src.Range("A" & src.Rows.Count).End(xlUp).Row 

    tgt.Range("B2:B" & lastRow).Value = src.Range("A2:A" & lastRow).Value 
End Sub 

Причина вы получаете сообщение об ошибке, потому что ваши диапазоны не имеют действительные конечные точки. Range ([firstcell]:[lastcell]) - правильный синтаксис, поэтому вам нужно добавить строку для последней ячейки как в исходном, так и в целевом диапазонах.

Обратите внимание, что даже если ваш код работает, он не будет делать желаемого. Вы устанавливаете столбец A равным столбцу B. Вам нужно перевернуть левую и правую стороны вашего заявления.

+0

Благодарим вас за быстрый ответ, но я пытаюсь скопировать его с одного листа на другой. (лист 1 - лист 2). Это только копирует столбец на одном листе. – GimGanDi

+0

Я вижу. Я отредактировал ответ для копирования с одного листа на другой. Попробуй это сейчас. (Измените Sheet5 и Sheet6 на 1 и 2, или все, что находится в вашей книге.) –

1
Sub CopyValues() 

    Dim rValues As Range 

    With Sheet1 
     Set rValues = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)) 
    End With 

    rValues.Offset(, 1).Value = rValues.Value 

End Sub 
0

Почему бы не просто скопировать весь столбец и повторно вставить все, что было в B1:

Range("A:A").Copy Columns("B:B") 
Range("B1").Value = "Whatever" 

Более подробно:

Dim previous 'As Variant (or whatever it is) 

previous = Worksheets("BB").Range("B1").Value 
Worksheets("AA").Range("A:A").Copy Worksheets("BB").Columns("B:B") 
Worksheets("BB").Range("B1").Value = previous 

Если нет данных ниже в колонке B которые вы хотите сохранить (вы не указали).

Смежные вопросы