将粘贴目标设置为另一张纸上的上次使用的行

问题描述 投票:0回答:1

非常感谢您抽出一点时间来帮助我!目前,我正在一个项目上,其中一部分使我陷入困境。我对VBA并不十分精通,因此很可能在这里遗漏了一些非常明显的内容。

目标:复制一组非连续的单元格(例如d69,d70,d72,d73,g92,g93等),然后将其粘贴到另一张纸上的另一个(这次是连续的)单元格范围中,在最后使用的行下方的行中。

上下文:我创建了一个从工作表1上的“用户表单”填写的信息数据库。当用户单击宏链接按钮时,数据将作为新条目复制到工作表2上。

想法:我一直在想,将变量设置为工作表2中最后一个单元格的值可能会更容易,然后为每个需要使用的单元格使用诸如range(“ b”&“ aa”)。pastespecial xlPasteValues之类的东西。复制过来。但是,我无法弄清楚这一点,或者找不到实现该目标所需要做的事情。任何帮助将不胜感激!非常感谢。

如果您有任何疑问或需要澄清,请告诉我!谢谢!

vba copy user-input paste
1个回答
0
投票

假设您知道sheet1上每个值的单元格地址AND单元格地址是恒定的。

请注意:您将需要调整工作表和范围参考以适合您的工作簿,包括名称等。

下面的代码用于单击userform命令按钮。这是为了模拟您的用户窗体如何将值放置在非连续单元格中。

Private Sub CommandButton1_Click()
Dim valOne As String
Dim valTwo As String
Dim valThree As String

valOne = Me.TextBox1.Text
valTwo = Me.TextBox2.Text
valThree = Me.TextBox3.Text

With ThisWorkbook.Sheets("Sheet1")
    .Range("C3").Value = valOne
    .Range("D4").Value = valTwo
    .Range("C6").Value = valThree
End With

End Sub

如您所见,我已选择使用单元格C3D4C6-现在通过名为sheet2的命令按钮将这些值移至cmdMoveToSheet2

Private Sub cmdMoveToSheet2_Click()
Dim myArray() As Variant
ReDim myArray(1 To 3)

With ThisWorkbook.Sheets("Sheet1")
    myArray(1) = .Range("C3").Value
    myArray(2) = .Range("D4").Value
    myArray(3) = .Range("C6").Value
End With

Dim Destination As Range
Dim Sheet2LastRow As Long
With ThisWorkbook.Sheets("Sheet2")
    Sheet2LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    Set Destination = .Range("A" & Sheet2LastRow + 1)
    Set Destination = Destination.Resize(UBound(myArray), 1)
End With

Destination.Value = Application.Transpose(myArray)

End Sub

首先将Sheet1中的单元格放入myArray()中-我再次进行此操作的方法是假设您知道所有值的确切位置,并且该位置不变。

然后将目的地确定为Column Alast used row + 1(+ 1移至最后使用的单元格下方的单元格)。

然后将数组放入目标范围。

Chip Pearson拥有有关数组以及如何使用它们的出色信息。您可以在他的网站www.cpearson.com上阅读它们,也可以使用[on this article on his website]来具体说明我们在这里所做的

© www.soinside.com 2019 - 2024. All rights reserved.