我在 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")
您也可以添加其他单元格。