用另一个工作表中的值填充工作表

时间:2019-03-21 17:52:27

标签: excel vba

首先道歉,如果已经解决了该主题或与之类似的问题。我试图用空白工作表旁边的其他工作表中包含的值填充空白工作表。

这是到目前为止我能想到的:

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 个答案:

答案 0 :(得分:3)

认为我们可以使用Select Case整理一下代码,而不用大量的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