[英]VBA Excel select a range of cells within a named range
我有一个命名范围col_9395
它是一整列。 我想在这个命名范围内设置一个范围。 我希望范围从第 3 行到同一列的第 200 行。 什么是最好的方法来做到这一点?
没有命名范围的原始工作线:
Set rngBlnk = Sheet108.Range("T3:T200").SpecialCells(xlCellTypeBlanks)
这是我没有运气尝试的代码:
Set rngBlnk = Range("col_9395)(3,1):Range("col_9395)(200,1).SpecialCells (xlCellTypeBlanks)
你可以看到这种逻辑
Option Explicit
Sub test()
Dim colToUse As Long
colToUse = ThisWorkbook.Worksheets("Sheet1").Range("ol_9395").Column
With ThisWorkbook.Worksheets("Sheet1")
Debug.Print .Range(.Cells(3, colToUse), .Cells(200, colToUse)).Address
End With
End Sub
Sub t()
Dim rng As Range
Set rng = Range("col_9395") ' for easier use
Dim blnkRng As Range
Set blnkRng = Range(Cells(rng.Rows(3).Row, rng.Column), Cells(rng.Rows(200).Row, rng.Column)).SpecialCells(xlCellTypeBlanks)
blnkRng.Select
End Sub
我所做的是将您的命名范围分配给一个变量(只是为了更容易引用)。 然后使用Range()
属性,我使用命名范围的3rd
行和200th
行来设置范围以查找空白单元格。
这个想法是,如果您的命名范围不仅仅是一整列,这将对您有所帮助。 它将从您的命名范围中获取相对的第 3 行和第 200 行。
Option Explicit
Public Sub TestMe()
Dim rngBlnk As Range
Dim firstCell As Range
Dim lastCell As Range
Set firstCell = [col_9395].Cells(3, 1)
Set lastCell = [col_9395].Cells(200, 1)
If WorksheetFunction.CountBlank(Range(firstCell, lastCell)) > 0 Then
Set rngBlnk = Range(firstCell, lastCell).SpecialCells(xlCellTypeBlanks)
End If
End Sub
SpecialCells
和分配给它们的一个问题是,如果没有来自特定类型的单元格,它会引发错误。
因此,在将rngBlnk
设置为特殊单元格之前,需要检查WorksheetFunction.CountBlank()>0
。
可能是错的,但我觉得这是最简单的一个:
Private Sub Test()
Dim rngBlnk As Range
Set rngBlnk = Range("col_9395").Rows("3:200").SpecialCells(xlCellTypeBlanks)
End Sub
我参加聚会迟到了,我知道,但也许这会对某人有所帮助。 我偶然发现了一种技术,在此处的任何少数“范围内”问题中,我都没有看到这种技术。
我发现您可以直接向 VBA 询问范围的范围。 我已经将一些数据格式化为表格,但它可能只是一个命名范围,甚至我认为是一个未命名的范围。 我正在运行的代码如下所示:
With Workbooks(Filename)
.Worksheets(tabName).Activate
.Worksheets(tabName).Range("SummaryBand").Range("B2:R2").Copy
End With
我的表格被命名为 SummaryBand,由于上一步不一定总是在电子表格上的相同绝对位置,但我想要一个在 SummaryBand 内的绝对范围。 在本例中,“B2:R2”是表格内的绝对位置,表格左上角的单元格为 A1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.