我正在尝试获取范围内的所有非空单元格。
'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循环遍历它们。
有什么建议我做错了吗?
感谢您的回复!
答案 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编辑器并运行代码。除了任何空白的单元格外,它应该打印所选范围内的所有内容。