Заполнение рабочего листа значениями из другого рабочего листа - PullRequest
0 голосов
/ 21 марта 2019

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

Вот то, что мне удалось придумать:

Private Sub Populate_Click()

Dim i As Integer, j As Integer

For i = 2 To 2614

For j = 1 To 6

If ActiveWorksheet.IsEmpty(Cells(i, j)) = True Then

    If j = 1 Then

    ActiveWorksheet.Cells(i, j).Value = Worksheets("Import").Cells(i, 1)

    Else

        If j = 2 Then
        ActiveWorksheet.Cells(i, j).Value = Worksheets("Import").Cells(i, 8)
        Else

            If j = 3 Then
            ActiveWorksheet.Cells(i, j).Value = Worksheets("Import").Cells(i, 2)
            Else

                If j = 4 Then
                ActiveWorksheet.Cells(i, j).Value = Worksheets("Import").Cells(i, 5)
                Else

                    If j = 5 Then
                    ActiveWorksheet.Cells(i, j).Value = Worksheets("Import").Cells(i, 9)
                    Else

                        If j = 6 Then
                        ActiveWorksheet.Cells(i, j).Value = Worksheets("Import").Cells(i, 6)
                        Else

                        End If
                    End If
                End If
            End If
        End If
    End If
End If

Next j
  Next i
  End Sub

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

Причина, по которой я использую так много операторов IF, заключается в том, что мне нужно готовить только определенные столбцы «Импорт» за раз, чтобы они моглибыть заселены в этом конкретном порядке.

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

Заранее спасибо!

1 Ответ

3 голосов
/ 21 марта 2019

Думаю, мы можем немного привести в порядок код, используя Выбрать регистр , а не множество Ifs.

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

Private Sub Populate_Click()

Dim i As Long, j As Long

For i = 2 To 2614
    For j = 1 To 6
        If IsEmpty(ActiveSheet.Cells(i, j)) Then
            Select Case j
                Case 1
                    ActiveSheet.Cells(i, j).Value = Worksheets("Import").Cells(i, 1)
                Case 2
                    ActiveSheet.Cells(i, j).Value = Worksheets("Import").Cells(i, 8)
                Case 3
                    ActiveSheet.Cells(i, j).Value = Worksheets("Import").Cells(i, 2)
                Case 4
                    ActiveSheet.Cells(i, j).Value = Worksheets("Import").Cells(i, 5)
                Case 5
                    ActiveSheet.Cells(i, j).Value = Worksheets("Import").Cells(i, 9)
                Case 6
                    ActiveSheet.Cells(i, j).Value = Worksheets("Import").Cells(i, 6)
            End Select
        End If
    Next j
Next i

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