繁体   English   中英

VBA Excel 选择命名范围内的一系列单元格

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM