首页 文章

在Excel VBA中选择可变范围内的所有非空单元格

提问于
浏览
0

我在Excel上有数据集 . 从B列开始,它具有从B3到周期性变大的可变数的连续数据(今天它是B114,但明天数据可能会延伸到B116) . 单元格B中的数据是连续的,永远不会被删除 . 对于B列中的每一行连续数据,我也想选择B-AG列的行 . 但是,B之后的行没有连续数据 .

例如:从B3到B120有连续数据 . 我想选择范围B3:AG120 .

我在VBA中编写的代码不起作用 . 它正确地停在B120(在这个例子中),然而,一旦它到达C-AG列中的非连续数据,它就会吓坏并选择超过120的行 . 我不肯为什么这段代码不起作用,任何帮助都是非常感激!

为了记录,表格中几乎每个单元格都有公式 . 但是,只有一些公式用数据填充单元格 . 我想选择每个单元格,无论它是否填充了数据,如果它在我的范围内 . 否则,我不想选择它 . 例如,过去的B120中有空单元格,其中包含公式 . 我不想在我的范围内包括那些 . 但是如果D40中有一个空单元格(在B3和AG120之间),我确实想在选择中包含它 .

Dim LR As Long, cell As Range, rng As Range
With Sheets("Sortable(2)")
    LR = .Range("B" & Rows.Count).End(xlUp).Row
    For Each cell In .Range("B3:B" & LR)
        If cell.Value <> "" Then
            If rng Is Nothing Then
               Set rng = cell
            Else
               Set rng = Union(rng, cell)
            End If
         End If
    Next cell
    rng.Select
End With

1 回答

  • 4
    Dim lastVal As Range, sht As Worksheet
    
    Set sht = Sheets("Sortable(2)")
    
    Set lastVal = sht.Columns(2).Find("*", sht.Cells(1, 2), xlValues, _
                                    xlPart, xlByColumns, xlPrevious)
    
    Debug.Print lastVal.Address
    
    sht.Range("B2", lastVal).Resize(, 32).Select 'select B:AG
    

相关问题