非常感谢您抽出一点时间来帮助我!目前,我正在一个项目上,其中一部分使我陷入困境。我对VBA并不十分精通,因此很可能在这里遗漏了一些非常明显的内容。
目标:复制一组非连续的单元格(例如d69,d70,d72,d73,g92,g93等),然后将其粘贴到另一张纸上的另一个(这次是连续的)单元格范围中,在最后使用的行下方的行中。
上下文:我创建了一个从工作表1上的“用户表单”填写的信息数据库。当用户单击宏链接按钮时,数据将作为新条目复制到工作表2上。
想法:我一直在想,将变量设置为工作表2中最后一个单元格的值可能会更容易,然后为每个需要使用的单元格使用诸如range(“ b”&“ aa”)。pastespecial xlPasteValues之类的东西。复制过来。但是,我无法弄清楚这一点,或者找不到实现该目标所需要做的事情。任何帮助将不胜感激!非常感谢。
如果您有任何疑问或需要澄清,请告诉我!谢谢!
假设您知道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
如您所见,我已选择使用单元格C3
,D4
和C6
-现在通过名为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 A
和last used row + 1
(+ 1移至最后使用的单元格下方的单元格)。
然后将数组放入目标范围。
Chip Pearson拥有有关数组以及如何使用它们的出色信息。您可以在他的网站www.cpearson.com上阅读它们,也可以使用[on this article on his website]来具体说明我们在这里所做的