2014-08-27 5 views
-2

Вот макрос, который я сгенерировал с использованием функции макроса записи в excel.Автоматизация макроса Excel

Range("A11").Select 
    Selection.Cut 
    Range("B11").Select 
    ActiveSheet.Paste 
    Range("A12").Select 
    Selection.Cut 
    Range("D11").Select 
    ActiveSheet.Paste 
    Range("A13").Select 
    Selection.Cut 
    Range("E11").Select 
    ActiveSheet.Paste 
    Range("A14").Select 
    Selection.Cut 
    Range("F11").Select 
    ActiveSheet.Paste 
    Range("A12:A14").Select 
    Range("A14").Activate 
    Selection.Delete Shift:=xlUp 
    Range("A12").Select 

Я не очень хорошо знаком с Excel или визуальным базовым. Я хочу запустить этот код примерно для 400 строк. Поэтому мне нужно автоматизировать это еще больше. Итак, вот мой план: Я буду использовать некоторые сломанные коды. Я не знаю, как писать в visual basic, так что кто-то может исправить код, чтобы синтаксис был правильным? «П» является переменной, которую я поставлю позже

Range("An").Select 
    Selection.Cut 
    Range("Bn").Select 
    ActiveSheet.Paste 
    Range("A(n+1)").Select 
    Selection.Cut 
    Range("Dn").Select 
    ActiveSheet.Paste 
    Range("A(n+2)").Select 
    Selection.Cut 
    Range("En").Select 
    ActiveSheet.Paste 
    Range("A(n+3)").Select 
    Selection.Cut 
    Range("Fn").Select 
    ActiveSheet.Paste 
    Range("A(n+1):A(n+3)").Select 
    Range("A(n+3)").Activate 
    Selection.Delete Shift:=xlUp 
    Range("A(n+1)").Select 
+0

Вы бы использовать петлю над ** п ** _________ также правильный синтаксис ** Диапазон («D» & n). Выберите **, а не ** Диапазон («Dn»). Выберите ** –

+0

Что вы подразумеваете под циклом по n? Спасибо за синтаксис :) –

+0

Вы уверены, что хотите VB.NET для этого? – pnuts

ответ

1

Что касается Loops, рассмотреть небольшую часть кода:

Range("A11").Select 
Selection.Cut 
Range("B11").Select 
ActiveSheet.Paste 

предположим, что мы хотим повторить это для строк 12 через 578. Мы бы использовать цикл:

Sub Aiman() 
    Dim n As Long 
    For n = 11 To 578 
     Range("A" & n).Select 
     Selection.Cut 
     Range("B" & n).Select 
     ActiveSheet.Paste 
    Next n 
End Sub 

блок кода между Для и Далее выполняется при п = 11,12,13, .... 578

Логика может быть оптимизирована далее путем удаления Выбрать сек

+0

Спасибо. Я знаю, что для циклов For я на самом деле не понимаю, почему вы сказали это, пока я не запустил код и не выяснил, что он запускался один раз: v. Большое вам спасибо. Теперь у меня есть работа! –

+0

Если вам нужна дополнительная помощь по этому конкретному проекту, просто обновите вопрос. –

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