2016-12-22 21 views
2

自分のコードでいくつかのセルアドレスを取得しようとしています。しかし選択が不連続なので、セルスはうまく動作しないようです。ExcelでVBAの範囲で不連続選択(Ctrlキーを使用する場合)をマージする方法

私のコードを入力するとき、あなたがスクリーンショットで見ることができるように、私は2つの行を選択するようユーザに求める、選択は黄色の領域(行番号7 & 9)
screenshot excel file

です:

Sub test() 

Dim rangeselected As range 


Set rangeselected = Application.InputBox("Select the quarters range", "Obtain Range Object", Type:=8) 

Debug.Print rangeselected .Cells(1, 1).Address 

Debug.Print rangeselected .Cells(2, 1).Address 

End Sub 

私は私がします。Debug.Printコマンドの結果として持っていることを考えた:E7 & E9ではなく、私はE7 & E8を取得

なぜ私は最初のもので良い結果を得たのか、2番目のものではないのか分かりません。

Debug.Print rangeselected .Cells(3, 1).Address 

しかし、私は行がrangeselected変数にお互いを「追跡」してもらうために、どのような操作を行うことができます。

私は良い結果を持っているために、私が書く必要があることを知っていますか?

選択に2行しかないので、私はちょっと混乱しています。 私の質問がはっきりしていることを願っています。事前にお時間をいただきありがとうございます。

答えて

1

Cells(r, c)範囲オブジェクトのプロパティは非常に簡単に動作し、範囲の先頭からr ans cをオフセットします。範囲外のオフセットを与えることさえできます!

明らかに、これはMulti-area rangeを反復するのに十分ではありません。さて、解決策は、Multi-area range.areasを反復することです。

Dim rangeselected As range 
Set rangeselected = Application.InputBox("Select the quarters range", "Obtain Range Object", Type:=8) 

For each area in rangeselected.Areas 
    For each cel in area.Cells '<-- could be also area.Rows, area.Columns... 

    Next cel 
Next area 
+1

ありがとうございました。うまくいきました。ありがとうございました ! – emka

+0

@emka、あなたは歓迎されて、それは助けてうれしい:) –

関連する問題