Заполнить столбцы из значения ячеек на каждом листе - PullRequest
0 голосов
/ 15 ноября 2018

То, что я пытаюсь сделать, это взять значения из определенных ячеек и сделать их столбцом заполнения.У меня несколько листов с разными значениями.

Этот код работает, как и ожидалось, с одним листом:

Sub Formatting_one()

   Range("A12").Value = Range("M6").Value
   Range("A12:A" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

End Sub

Затем я начал пробовать то же самое, но с циклическим просмотром листов.Вот в чём я застрял.Вот мой код для этого:

Sub Formatting_many()

    Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets
        ws.[A1].Resize(, 6).EntireColumn.Insert

        ws.Range("A12").Value = ws.Range("M6").Value
        ws.Range("A12:A" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

        ws.Range("B12").Value = ws.Range("M7").Value
        ws.Range("B12:B" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

        ws.Range("C12").Value = ws.Range("M8").Value
        ws.Range("C12:C" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

        ws.Range("D12").Value = ws.Range("I5").Value
        ws.Range("D12:D" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

        ws.Range("E12").Value = ws.Range("I4").Value
        ws.Range("E12:E" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

        ws.Range("F12").Value = ws.Range("I6").Value
        ws.Range("F12:F" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

        ws.Range("G12").Value = ws.Range("I7").Value
        ws.Range("G12:G" & Cells(Rows.Count, 7).End(xlUp).Row).FillDown

    Next ws

End Sub

Я сделал шаг за шагом, и в результате ячейка копируется в первую ячейку ячеек диапазона заполнения, но затем она удаляется.Может кто-нибудь помочь?

1 Ответ

0 голосов
/ 15 ноября 2018

Проблема ...

... в том, что вы ищете последнюю использованную строку в столбце G

Cells(Rows.Count, 7).End(xlUp).Row

Но поскольку вы добавили 6 столбцов с ws.[A1].Resize(, 6).EntireColumn.Insert, столбец G теперь пуст,поэтому последняя использованная строка - 1

, и вы на самом деле запускаете

ws.Range("A12:A1").FillDown

, который берет пустую ячейку из A1 и заполняет ее до A12 (таким образом, ваше вставленное значение в A12 удаляется).


Решение

После вставки исходного столбца G переместился на

ws.Cells(ws.Rows.Count, 7 + 6).End(xlUp).Row
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...