【问题标题】:How do I name a dynamic range generated using lastrow and lastcolumn VBA?如何命名使用 lastrow 和 lastcolumn VBA 生成的动态范围?
【发布时间】:2021-11-15 11:57:55
【问题描述】:

我有一个问题,我正在寻找的是制作一个自适应的代码(唯一修改的是行数,而不是列数),我需要给它一个名字,因为我将使用list 作为高级过滤器选项中的列表范围,列整数作为标准范围,这是我的代码,如果您提出其他建议,我接受建议。

Dim sht As Worksheet

Dim LastRow As Long

Dim LastColumn As Long

Dim StartCell As Range



Set sht = Worksheets("Sheet1")

Set StartCell = Range("A1")

LastRow = sht.Cells(sht.Rows.Count, StartCell.Column.End(xlUp).Row)

LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count.End(xlToLeft).Column)

sht.Range(StartCell, sht.Cells(LastRow, LastColumn).Select)

P.s:我是 VBA 的新手

【问题讨论】:

  • 值是否在连续范围内,即没有空列或空行?然后你可以使用 Currentregion - 这让一切变得更容易:sht.range("A1").currentregion 会给你你所需要的 - 无论行数如何 (docs.microsoft.com/en-us/office/vba/api/…)

标签: excel vba dynamic range


【解决方案1】:

除非你打算改变它,否则不需要StartCell,否则你只是使用sht.Cells(1,1)。此外,您最后选择了一个范围。最好避免ActivateSelect。如果你定义了范围,你可以复制、搜索等。

Dim sht As Worksheet
Dim LastRow As Long
Dim LastColumn As Long
Dim StartCell As Range

Set sht = Worksheets("Sheet1")

LastRow = sht.Cells(sht.Rows.Count, 1).End(xlUp).Row
LastColumn = sht.Cells(1, sht.Columns.Count).End(xlToLeft).Column

Dim Rng As Range
Set Rng = sht.Range(1, sht.Cells(LastRow, LastColumn))

Rng.AutoFilter, Field:=1, Criteria1:="New"

【讨论】:

  • 嗨达雷尔,非常感谢你的帮助,我不熟悉用范围进行高级过滤的方法,你能根据我上面的评论给我一个例子吗?为了更好地了解你
  • 我添加了一行显示如何过滤范围。对于更高级的过滤器,您可以查看 Microsoft 文档,docs.microsoft.com/en-us/office/vba/api/…,但大多数情况下使用 AutoFilter
猜你喜欢
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多