2014-01-08 8 views
0

Привет, я новичок в VBA, хочу скопировать одну строку кода, начинающуюся с C: 14 до K: 14, и вставить ее в другую книгу в строку C5-K5 , Я написал этот код, но все еще получаю ошибки, правильно ли я нахожусь на правильных дорожках?макрос для копирования одной строки данных из одной книги в другую

Sub Shankill() 
Dim sBook_t As String 
Dim sBook_s As String 

Dim sSheet_t As String 
Dim sSheet_s As String 

Dim lMaxRows_t As Long 
Dim lMaxRows_s As Long 

Dim sMaxCol_s As String 

Dim sRange_t As String 
Dim sRange_s As String 

    sBook_t = "Shankill DR.xls" 
    sBook_s = "DR complete.xls" 

    sSheet_t = "Shankill DR" 
    sSheet_s = "DR complete" 

    lMaxRows_t = Workbooks(sBook_t).Sheets(sSheet_t).Cells(Rows.Count, "C:14").End(xlUp).Row 
    lMaxRows_s = Workbooks(sBook_s).Sheets(sSheet_s).Cells(Rows.Count, "C5").End(xlUp).Row 

    sMaxCol_s = Workbooks(sBook_s).Sheets(sSheet_s).Cells(1, Columns.Count).End(xlToLeft).Address 
    sMaxCol_s = Mid(sMaxCol_s, 2, InStr(2, sMaxCol_s, "$") - 2) 

    If (lMaxRows_t = 1) Then 
     sRange_t = "C14:" & sMaxCol_s & lMaxRows_s 
     sRange_s = "C:5" & sMaxCol_s & lMaxRows_s 

     Workbooks(sBook_t).Sheets(sSheet_t).Range(sRange_t) = Workbooks(sBook_s).Sheets(sSheet_s).Range(sRange_s).Value 

    Else 
     sRange_t = "C:14" & (lMaxRows_t + 1) & ":" & sMaxCol_s & (lMaxRows_t + lMaxRows_s - 1) 
     sRange_s = "C:5" & sMaxCol_s & lMaxRows_s 

     Workbooks(sBook_t).Sheets(sSheet_t).Range(sRange_t) = Workbooks(sBook_s).Sheets(sSheet_s).Range(sRange_s).Value 


    End If 

End Sub 
+1

' "C: 5"' ??? Аналогично для других. Адреса вашего диапазона неверны –

+0

То же самое, что вы пытаетесь найти последнюю строку ... «C: 14»? –

+0

Спасибо за вашу помощь, я все еще получаю ошибку времени выполнения 9? –

ответ

2

хотите скопировать одну строку кода, которая начинается на C: 14, K: 14 и вставить его в другую книгу в строке С5 К5.

Все, что вам нужно, это

Sub Shankill() 
    Dim sBook_t As String 
    Dim sBook_s As String 

    Dim sSheet_t As String 
    Dim sSheet_s As String 

    sBook_t = "Shankill DR.xls" 
    sBook_s = "DR complete.xls" 

    sSheet_t = "Shankill DR" 
    sSheet_s = "DR complete" 

    Workbooks(sBook_t).Sheets(sSheet_t).Range("C14:K14").Copy _ 
    Workbooks(sBook_s).Sheets(sSheet_s).Range("C5") 
End Sub 

Followup от Комментариев

Да я хочу, чтобы скопировать через значение, которые являются результатом вычисления?

Изменить код этого (непроверенные)

Sub Shankill() 
    Dim sBook_t As String 
    Dim sBook_s As String 

    Dim sSheet_t As String 
    Dim sSheet_s As String 

    sBook_t = "Shankill DR.xls" 
    sBook_s = "DR complete.xls" 

    sSheet_t = "Shankill DR" 
    sSheet_s = "DR complete" 

    Workbooks(sBook_t).Sheets(sSheet_t).Range("C14:K14").Copy 
    Workbooks(sBook_s).Sheets(sSheet_s).Range("C5").PasteSpecial Paste:=xlPasteValues 
End Sub 
+0

Отлично работает, спасибо –

0

Попробуйте

Sub macro1() 
Range("A3:M6").Copy Destination:=Cells(ActiveCell.Row + 1, 1) 
End Sub 
Смежные вопросы