Выделение и автозаполнение ячеек на нескольких листах - Excel VBA - PullRequest
0 голосов
/ 20 мая 2019

Я хочу автоматически заполнять данные в ячейках $A$5:$A$37 на каждом листе с именем "Arbeitsblatt XX".
Мне удалось получить код для части автозаполнения, а также для повторения в каждом листе.
Источники:

Теперь объединение моих шаблонов кодирования прошло почти успешно. Мне удалось выполнить автозаполнение только на листе, включая соответствующую кнопку ИЛИ, как и сейчас, как вы можете видеть в следующем коде, я могу выбрать все соответствующие ячейки на каждом листе, но без автозаполнения.

Полагаю, это как-то связано с отсутствующей ссылкой на лист, но я слишком глуп, чтобы это обнаружить. Спасибо за вашу помощь.

            Sub FillDown()
            Dim xRng As Range
            Dim xRows As Long, xCols As Long
            Dim xRow As Integer, xCol As Integer

            Dim wsQ As Worksheet

            Set xRng = Selection
            Set currws = ActiveSheet

            Application.ScreenUpdating = False


            For Each wsQ In ThisWorkbook.Worksheets

             If Left(wsQ.Name, 12) = "Arbeitsblatt" Then
                    With wsQ
                     wsQ.Activate
                Cells(5, 1).Resize(33, 1).Select

                xCols = xRng.Columns.CountLarge
                xRows = xRng.Rows.CountLarge
            For xCol = 1 To xCols
              For xRow = 1 To xRows - 1
                If xRng.Cells(xRow, xCol) <> "" Then
                  xRng.Cells(xRow, xCol) = xRng.Cells(xRow, xCol).Value
                  If xRng.Cells(xRow + 1, xCol) = "" Then
                    xRng.Cells(xRow + 1, xCol) = xRng.Cells(xRow, xCol).Value
                  End If
                End If
              Next xRow
            Next xCol
            currws.Activate

                     End With
                End If
            Next wsQ

            Application.ScreenUpdating = True
            End Sub

1 Ответ

0 голосов
/ 20 мая 2019

Мне грустно видеть, что пока нет ответа или совета по вашему вопросу. Пожалуйста, позвольте мне попытаться помочь.

Мне нравятся простые коды, поэтому я попытался использовать метод .AutoFill, который предоставляет Excel. Пожалуйста, смотрите код ниже, который я проверил на образце Workbook:

Sub FillDown()
Dim wsQ As Worksheet

    For Each wsQ In ThisWorkbook.Sheets
        If Left(wsQ.Name, 12) = "Arbeitsblatt" Then
            With wsQ
            .Activate
            .Range("A5").AutoFill Destination:=Range("A5:A37") 'this is the autofill which starts autofilling from A5 cell and ends in A37 cell
            .Range("A5:A37").Select
            End With
        End If
    Next wsQ

End Sub

Я не уверен, что именно вы пытаетесь заполнить автоматически, поэтому этот простой код может быть или не быть достаточным. Если бы вы могли предоставить больше информации (например, какие данные вы пытаетесь заполнить автоматически, и если они всегда начинаются с A5, или если ячейки уже наполовину заполнены, а вам просто нужно закончить остальные и т. Д.)

Пожалуйста, дайте мне знать результаты, чтобы я или другие могли помочь. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...