2015-08-14 3 views
0

Я хочу, чтобы назначить макрос, который скопировать несколько значений из одного листа к другому, и до сих пор я пришел к этому:Подпрограммы в VBA - только выполняет первую (Excel)

Sub botaoconfirmar_click() 
Range("C6").Select 
Selection.Copy 

Worksheets("Historico").Select 
lMaxRows = Cells(Rows.Count, "B").End(xlUp).Row 

Range("B" & lMaxRows + 1).Select 
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _  
False, Transpose:=False 

Range("C59").Select 
Selection.Copy 

Worksheets("Historico").Select 
lMaxRows = Cells(Rows.Count, "C").End(xlUp).Row 

Range("C" & lMaxRows + 1).Select 
Selection.PasteSpecial , Operation:=xlNone, SkipBlanks:= _ 
False, Transpose:=False 
End Sub 

Проблема в том, что, когда я нажимаю кнопку с этим макросом, он выполняет только первое действие. Если я изменю порядок, он по-прежнему выполняет только первое действие (прежнее № 2).

Что я делаю неправильно?

ответ

0

В частности, к вашей проблеме вы не подпадаете под определение Sheet, связанное с оператором Copy. Итак, когда вы копируете Range("C59"), ваш код по-прежнему находится на Sheets("Historico"). Измените оба ваших начальных оператора выбора, например, Sheets("Data").Range("C6").Select.

На боковой ноте код работает не оптимально. Нет необходимости выбирать каждую ячейку и лист, с которыми вы собираетесь работать. Лучший способ написать код будет (опять же, если данные указаны в листе с именем «Данные»):

Sub botaoconfirmar_click() 
    Dim wsData As Worksheet 
    Dim wsHistorico As Worksheet 
    Dim lMaxRows As Long 

    Set wsData = Worksheets("Data") 
    Set wsHistorico = Worksheets("Historico") 

    lMaxRows = wsHistorico.Cells(Rows.Count, "B").End(xlUp).Row 
    wsHistorico.Range("B" & lMaxRows + 1).Value = wsData.Range("C6") 

    lMaxRows = wsHistorico.Cells(Rows.Count, "C").End(xlUp).Row 
    wsHistorico.Range("C" & lMaxRows + 1).Value = wsData.Range("C59") 

End Sub 
+0

Это сработало! Большое вам спасибо, я с тех пор пытаюсь заставить его работать: D – Username79123

+0

@Joao Если это необходимо, отметьте вопрос «ответили». – user3561813