Добрый вечер. Есть 4 диапазона данных (каждый по 4 столбца, количество строк постоянно меняется), их местоположение известно.
Я попробовал написать макрос, он дает результат. Но я чувствую, что можно было сделать это по-другому/легче/эффективнее.
Пожалуйста, укажите на эти моменты (можно без кода, просто словами описать где проблема и какие конструкции использовать). Я только начал учить VBA, хочется понять, где проблемы.
Спасибо
Я попробовал написать макрос, он дает результат. Но я чувствую, что можно было сделать это по-другому/легче/эффективнее.
Пожалуйста, укажите на эти моменты (можно без кода, просто словами описать где проблема и какие конструкции использовать). Я только начал учить VBA, хочется понять, где проблемы.
Спасибо
Код |
---|
Sub asd() Dim shtX As Worksheet 'рабочий лист Dim rngStart As Range 'начальная ячейка Dim rngFinish As Range 'ячейка для другиз диапазонов Dim rngX As Range Dim rngAll As Range 'весь рабочий 1-ый диапазон Dim rngOther As Range 'весь другой диапазон Dim Nrow As Long 'число строк Set shtX = ActiveSheet Set rngStart = shtX.Range("A1") Set rngAll = rngStart.CurrentRegion Nrow = rngAll.Rows.Count Set rngFinish = shtX.Range("H1") Set rngOther = rngFinish.CurrentRegion Set rngX = rngStart.Offset(Nrow, 0) rngOther.Offset(1, 0).Select Selection.Cut rngX.Select ActiveSheet.Paste rngOther.Clear Set shtX = ActiveSheet Set rngStart = shtX.Range("A1") Set rngAll = rngStart.CurrentRegion Nrow = rngAll.Rows.Count Set rngFinish = shtX.Range("o1") Set rngOther = rngFinish.CurrentRegion Set rngX = rngStart.Offset(Nrow, 0) rngOther.Offset(1, 0).Select Selection.Cut rngX.Select ActiveSheet.Paste rngOther.Clear Set shtX = ActiveSheet Set rngStart = shtX.Range("A1") Set rngAll = rngStart.CurrentRegion Nrow = rngAll.Rows.Count Set rngFinish = shtX.Range("v1") Set rngOther = rngFinish.CurrentRegion Set rngX = rngStart.Offset(Nrow, 0) rngOther.Offset(1, 0).Select Selection.Cut rngX.Select ActiveSheet.Paste rngOther.Clear End Sub |