如何在不使用特定单元格的情况下记录宏范围?

时间:2018-08-13 14:39:13

标签: excel vba excel-vba

我已经记录了一个宏并想要选择活动单元格,但是当我在记录宏的同时选择控件A时,它将在我的宏中列出实际的单元格,但是我希望此宏在具有不同范围的文档上运行。 / p>

ActiveSheet.Range("$A$1:$AB$6442")

再次相同,当我想跳到最后一行并按下控制向下箭头时,它指出该行在我的宏上下降了,如何使该宏在可能有更多行的电子表格上使用?< / p>

Selection.End(xlDown).Select
Range("A6443").Select

非常感谢

1 个答案:

答案 0 :(得分:1)

除了避免使用.select / .activate(在评论中发布的How to avoid using Select in Excel VBA)之外,您还可以选择范围 HOW 的所有选项。

复制范围的一个非常常见的代码是:

Dim lr as long 'lr = last row
lr = cells(rows.count,1).end(xlup).row
range(cells(1,1),cells(lr,1)).Copy

这允许您以编程方式定义固定范围。您还可以使用完整的列或行,例如:

Columns("D").Copy
Columns(4).Copy 'D or 4 are interchangeable

Rows(2).Copy

您甚至可以使用变量,该变量可能会根据其他条件确定要查找的行。如果我要复制整个最后一行:

Dim lr as long 'lr = last row
lr = cells(rows.count,1).end(xlup).row
Rows(lr).Copy

您甚至可以循环循环进行活动:

Dim lr as long, i as long
lr = cells(rows.count,1).end(xlup).row
For i = 1 to lr
    If cells(i,1).value = 0 Then Rows(i).Interior.Color = RGB(0, 255, 0)
Next i

了解范围的布局方式,并使用.Find或.Match之类的内容将有助于选择适当的行/列,使您可以拥有更动态的代码,从而对工作表/工作簿中的更改做出反应。

相关问题