获取数组中范围的非空格单元格

时间:2016-03-22 16:22:15

标签: excel excel-vba excel-2010 vba

我正在尝试获取范围内的所有非空单元格。

    'get keywords - only non-empty values
    Dim sheetDataSource As String
    Dim LR As Long
    Dim keywords As Variant
    Dim strUrl As String
  '  Set sheetDataSource = "DataSource"
    LR = Range("A" & Rows.Count).End(xlUp).Row
    Sheets("Settings").Range("A2:A" & LR).SpecialCells(xlCellTypeConstants, 23).Select

目前,我什么也没收到。此外,我想将它们放入一个数组中,用for循环遍历它们。

有什么建议我做错了吗?

感谢您的回复!

2 个答案:

答案 0 :(得分:3)

我建议使用Intersect来获取所有非空单元格:

With Sheets("Settings").Range("A2:A" & LR)
    Application.Intersect(.SpecialCells(xlCellTypeConstants), .SpecialCells(xlCellTypeVisible)).Select
End With

从这里你可以遍历这个范围而不是作为一个数组存储(除非你需要它作为一个数组的特定原因)。虽然我也建议不使用.Select方法,但是,将所需范围设置为等于变量。

Dim NonEmpties As Range

With Sheets("Settings").Range("A2:A" & LR)
    Set NonEmpties = Application.Intersect(.SpecialCells(xlCellTypeConstants), .SpecialCells(xlCellTypeVisible))
End With

答案 1 :(得分:0)

我喜欢Dan的答案,但万一你想做一些范围试验:

selectedRange = Application.Selection

For Each cell In selectedRange

    If cell <> "" Then Debug.Print cell

Next

突出显示工作簿中的范围,然后转到VB编辑器并运行代码。除了任何空白的单元格外,它应该打印所选范围内的所有内容。