2016-03-22 8 views
0

範囲の空でないセルをすべて取得しようとしています。配列の範囲の非エンプティセルを取得する

'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ループでそれらを実行する配列にそれらを配置したいと思います。

私が間違っていることは何ですか?

あなたの返信を歓迎します!

+1

戻ってください。あなたはそれらを '.select'しています – Raystafarian

+0

@Raystafarian私はループすることができるすべての値の配列を持っていたいと思います。 – mrquad

+1

上記のコードではどうなると思いますか?あなたは何かを得ているわけではありません - あなたはそれを選ぶだけです。 – Raystafarian

答えて

2

私は、すべての非空のセルを取得するには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 
+0

あなたの答えはThx!あなたの答えにfor-loopの例を示すのがとても親切でしょうか。 – mrquad

+0

私はあなたの例を試してみましたが、私もエラーが出ます:「引数オプションではない」 – mrquad

+1

謝罪を、あなたの編集のための – Dan

0

が、私はダンの答えを好きですが、念のためにあなたが範囲で実験のビットをしたい:

selectedRange = Application.Selection 

For Each cell In selectedRange 

    If cell <> "" Then Debug.Print cell 

Next 

ハイライトワークブックの範囲を、そしてVBエディタに反転し、実行しますコード。空白のセルを除いて、選択した範囲内のすべてを印刷する必要があります。

関連する問題