将行作为variables复制一个数组

我是Excel VBA编程新手,我正在使用2010版本。

我想复制数组中列出的单元格的内容,所以我可以将它们粘贴到另一个工作表上。

列将保持不变,但我希望该行在哪里活动单元格。 代码链接到一个button。

当我用一个单元格整数昏暗的数组,这就像一个魅力。 我希望有一种方法可以使数组dynamic的行号基于活动单元格。

Dim x As Integer Dim myarray As Variant x = ActiveCell.Row myarray = Array("Ax", "Fx", "Ix", "Jx", "Kx", "Rx") With ThisWorkbook.Worksheets("HANDOVER") Cells(x, myarrray).Select Selection.Copy End With 

您不能将数组作为列parameter passing给Cells 。 你可以做的是一个简单的Replace操作,像这样的地址string:

 Dim x As Long Dim myarray As Variant x = ActiveCell.Row myarray = "Ax,Fx,Ix,Jx,Kx,Rx" ThisWorkbook.Worksheets("HANDOVER").Range(Replace(myarray, "x", x)).Copy 

这应该对你有所帮助,我有一个自定义函数(见下面)来查看头文件,并获得相应的列号,以便以后重用。

然而,我不得不修改你的代码(我摆脱了无用和资源贪婪的.Select )来使用我的function,请参阅下面的组合:

 Sub Test_Mabes() Dim x As Integer, _ myArray As Variant, _ Ws As Worksheet, _ ColNb() As Variant Set Ws = ThisWorkbook.Worksheets("HANDOVER") x = Ws.ActiveCell.Row myArray = Array("Ax", "Fx", "Ix", "Jx", "Kx", "Rx") ReDim ColNb(UBound(myArray)) For i = LBound(myArray) To UBound(myArray) ColNb(i) = GetColumnNb(Ws, myArray(i)) Next i Ws.Cells(x, ColNb).Copy End Sub 

这里是function:

 Public Function GetColumnNb(ByVal SheetName As Worksheet, ByVal HeaderName As String) As Integer Dim ShA As Worksheet Set ShA = SheetName For j = 1 To ShA.Cells(1, Columns.Count).End(xlToLeft).Column If LCase(ShA.Cells(1, j)) <> LCase(HeaderName) Then Else GetColumnNb = j End If Next j End Function