2017-05-31 708 views
0

我目前正在尝试完成一个宏,它将所有人的列表放到一个列表中,并显示所有列表中的人员的所有不同信息。Excel VBA变量列选择

我已经到了将所有列表放在一起的地步,现在我需要做的就是选择正确的数据并编译它。

我当前的代码:

Sheets("Sheet2").Select 
Columns("E:AI").Select 
Selection.Copy 
Sheets("Sheet1").Select 
Range("E1").Select 
ActiveSheet.Paste 

我试图取代列线,以便它可以选择可变长度。

Columns("E").Select 
Range(Selection, Selection.End(x1toRight)).Select 
Range(Selection, Selection.End(x1Down)).Select 
Selection.Copy 

当宏获取对我更新的代码第2号线,我得到一个运行时错误“1004”:应用程序定义或对象定义错误。

当我逐行浏览它时,Columns(“E:AI”)选择与以前的列相同的数据似乎存在问题。

任何帮助将不胜感激。

+1

'x1toRight'应该是'xLtoRight','x1Down'应该是'xLDown'。 – Jeeped

+0

为什么在开始使用完整列时尝试使用'xlDown'?记录下自己执行这些操作并检查您生成的代码。 – Jeeped

+0

你也应该避免使用'Select',参见[这个答案](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)了解更多信息 – Jordan

回答

0

不完全确定你要做什么,但是这个代码直到选择E1 - >最后一列和最后一行填满。

您需要对其进行调整以适应您的需求。我假设你的表是方形的,如果不改变代码的话。

我计算了列E中使用的行,如果这不是你想要改变的行。
我还查找了第1行的最后一列。如果这不正确,请更改。

LastCol = ActiveSheet.Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Column ' here you need to change '1' to what row to look at 
LastRow = Cells(Rows.Count, "E").End(xlUp).Row ' change "E" to fit your need 
Range("E1:" & Split(Cells(1, LastCol).Address(True, False), "$")(0) & LastRow).Select 
+0

我试图选择E之后的所有列直到数据结束。我拉我的信息从不同的列我需要复制的列表。这会为此工作吗? – CZ31

+0

@ user8092309好吧,如果你告诉我你的工作表看起来像我可以回答你的问题。或者你可以试试看。无论哪种方式。我确定它可以工作,或者我可以让它工作 – Andreas

+0

@ user8092309你说“所有的列”。然而,你给我们上面的代码个人它是一个单元格的范围,而不是你选择的列。第一行你选择E列,然后“按右箭头”菜单选择直到结束。精细。但是,你会“按箭头键”,你看到混乱吗?你想要列或单元格的范围? – Andreas