如何在 Excel 中添加一个命令按钮,从 8 个不同的单元格中获取数据并将它们放在另一行中?

如何在 Excel 中添加一个命令按钮,从 8 个不同的单元格中获取数据并将它们放在另一行中?

我在 Excel 单元格 D4、D9、D14、D20、D25、G3、H2 和 I2 中有数据。每次,我在所有单元格中都有不同的数据,当我单击命令更新按钮时,我希望将数据传输到一行中的“工作表 2”中。

我知道我必须使用宏,并且我在网上查找过的所有地方都有与一系列单元格相关的答案,比如从 A2:A12 开始,但没有针对几个特定单元格的答案。

答案1

您可以单独复制它们或使用数组。

Option Explicit

Private Sub CommandButton1_Click()

    Dim vals As Variant

    With Worksheets("Sheet1")

        'resize vals to hold all 8 values in a single row
        ReDim vals(1 To 1, 1 To 8)

        'put the values into an array
        vals(1, 1) = .Range("D4").Value
        vals(1, 2) = .Range("D9").Value
        vals(1, 3) = .Range("D14").Value
        vals(1, 4) = .Range("D20").Value
        vals(1, 5) = .Range("D25").Value
        vals(1, 6) = .Range("G3").Value
        vals(1, 7) = .Range("H2").Value
        vals(1, 8) = .Range("I2").Value

    End With

    With Worksheets("Sheet2")

        'find next available row in sheet2
        With .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0)

            'resize the target and insert vals
            .Resize(UBound(vals, 1), UBound(vals, 2)) = vals

        End With

    End With

End Sub

答案2

您可以尝试此 VBA 宏将某些单元格的值从工作表复制到另一个工作表。

Private Sub CommandButton1_Click()

Dim LR As Long, i As Long, cls

cls = Array("D4", "D9", "D14", "D20", "D25", "G3", "H2", "I2")

With Sheets("Sheet2")
    LR = WorksheetFunction.Max(2, .Range("A" & Rows.Count).End(xlUp).Row + 1)

    For i = LBound(cls) To UBound(cls)
    .Cells(LR, i + [A1].Column).Value = Sheets("Sheet1").Range(cls(i)).Value
    Next i
End With

End Sub

注意:

  • 上面的代码Sheet1有源数据和Sheet2目标表。
  • WorksheetFunction.Max(2,,这里2设置目标工作表中的第 2 行,并且可编辑。

  • 由于您要处理几个单元格,因此应该使用另一种方法,

    Sheets("Sheet1").Range("D4").Copy Destination:=Sheets("Sheet2").Range("A1")
    

您也可以添加其他单元格。

相关内容