在ExcelVBA中选择变量范围内的所有非空白单元格



我在Excel上设置了I数据。从 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
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

相关内容

  • 没有找到相关文章

最新更新