VBA将值粘贴到下一个空单元格中

标签 vba excel macros

我有一个 VBA 宏,它只需将一个单元格 (Worksheet1.a1) 中的值复制到另一个单元格 (Worksheet2.a1) 中,该宏由带有指定宏的按钮触发。

Sub copy_values()

    Worksheets("Worksheet2").Range("a1").Value = Worksheets("Worksheet1").Range("a1").Value

End Sub

问题是在 Worksheet1 上,我有一个组合框列出了所有可用的患者。根据选择的患者,Worksheet1.A1 中的值会发生变化。

假设我选择“患者 A”并使用按钮将 Worksheet1.A1 的值(假设该值为“500”)复制粘贴到 Worksheet2.A2 中。如果我然后使用组合框选择“患者 B”,这会将 Worksheet1.A1 的值更改为“600”,然后继续使用按钮将该值粘贴到 Worksheet2.A2(之前的“500”)中显然已经被新值覆盖了。

我需要保留这两个值。因此,在将患者 A 的值粘贴到 Worksheet2.A1 中后,我需要将患者 B 的值以动态方式粘贴到 Worksheet2.A2 中。我无法对此进行硬编码,因为我有 300 多名患者的列表。

最佳答案

你可以这样做:

Sub copy_values()
    Dim R As Range
    Set R = Worksheets("Worksheet2").Cells(Rows.Count, 1).End(xlUp) 'last cell in Column A with data
    If Len(R.Value) > 0 Then Set R = R.Offset(1)
    R.Value = Worksheets("Worksheet1").Range("a1").Value
End Sub

其想法是查找 A 列中包含数据的最后一个值。如果 A 列为空,End 方法将返回 A1。上面的代码检查这种可能性。

这是一个经过调整的版本,它采用可选的源单元格字符串参数:

Sub copy_values(Optional Source As String = "A1")
    Dim R As Range
    Dim col As Long
    col = Range(Source).Column

    Set R = Worksheets("Worksheet2").Cells(Rows.Count, col).End(xlUp) 'last cell in Column col with data
    If Len(R.Value) > 0 Then Set R = R.Offset(1)
    R.Value = Worksheets("Worksheet1").Range(Source).Value
End Sub

工作原理如下:

Sub test()
    copy_values 'works as before

    copy_values "B1" 'copies value in B1 in first sheet to first available slot in column B in second sheet
End Sub

关于VBA将值粘贴到下一个空单元格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37662163/

相关文章:

.net - 是否有与 Excel 中的 NETWORKDAYS 等效的 .NET 方法?

如果不为空、无效或为 0,则计算单元格的 Excel 公式

excel - 如果列中的值为否(50+列/表)使用循环隐藏多个工作表

sqlite - SQLite VBA库-它们是否需要注册的组件?

.net - 单元格注释的字符串格式 EPPLUS 库

c++ - 用于检查变量是否等于可变参数之一的可变参数宏

c++ - 如何获取可变参数宏中每个参数的名称?

c - 使用宏内联脚本

excel - 如何在 Excel 单元格中迭代字符时提高性能

vba - Excel VBA - 如何强制关闭 ADO 连接?