录制宏时Excel中的可变数据集。 VBA

时间:2018-04-09 10:23:30

标签: excel excel-vba select multiple-columns vba

我正在录制一个宏,以便制作一个简单的过程,我必须经常更简单一点。我没有问题,因为它非常简单,但在舞台上我有三列。我们称之为绿色,琥珀色和红色,我想通过将一个放在另一个上面来创建一个,从而给出一个(上下)红色,琥珀色和绿色列。

当数据集发生变化并且这些列更改其大小(更多或更少的行)时,宏会根据记录宏时所用的绝对引用来剪切这些列。

我希望选择(选择红色琥珀色和绿色作为单个列粘贴到单个列上)为“动态”并随数据集的变化而变化。

enter image description here

我选择各列的方式是这样的。

Range(Selection, Selection.End(xlDown)).Select
ActiveCell.Range("A1:B7").Select
Selection.Cut
ActiveCell.Offset(0, -5).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(0, 9).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveCell.Range("A1:B8").Select
Selection.Copy
ActiveCell.Offset(0, -9).Range("A1").Select
Selection.Insert Shift:=xlDown

在这种情况下,我试图使用相对引用,以防魔法自动发生。我不知道任何VBA编程,所以我使用宏。

我会详细介绍,但我想任何了解VBA的人都知道如何解决这个问题。

由于

1 个答案:

答案 0 :(得分:0)

在您的情况下,您可以使用CurrentRegion,它将自动调整大小以接收所有连续的行和列。

Sub x()

Range("A:B").ClearContents

Range("N1").CurrentRegion.Copy Range("A1")
'alternative to above if CurrentRegion not applicable
'Range("N1",range("N" & rows.count).end(xlup)).resize(,2).Copy Range("A1")
Range("J1").CurrentRegion.Copy Range("A" & Rows.Count).End(xlUp)(2)
Range("F1").CurrentRegion.Copy Range("A" & Rows.Count).End(xlUp)(2)

End Sub