- ベストアンサー
エクセルvbaでアクティブ(選択された)なセルを順に取り出すには
エクセル97のvbaでいろいろ試したいのですが、標記の事について 分かりません。出来ないことなのか、簡単なことなのかも分かりま せんのでよろしくお願いします。下記を作成しても左上の1つしか 取り出せません。 Sub サンプルマクロ2() For Each a In ActiveCell s = a.Value MsgBox (s) Next a End Sub
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 ActiveCell を Selection にしましょう。
その他の回答 (1)
- tamagawa49
- ベストアンサー率46% (123/265)
SelectionCellってサポートしてたかな? まず、ActiveCellというのはひとつしかありません。 たとえ範囲でセルを選んでも、現在入力できるセル一つだけです。 したがって、そのあたりがActiveとSelectの違いになります。 こんなマクロはどうでしょう。 Sub サンプルマクロ2() Dim r1, r2, c1, c2 As Integer r1 = ActiveCell.Row c1 = ActiveCell.Column r2 = r1 + Selection.Rows.Count - 1 c2 = c1 + Selection.Columns.Count - 1 For m = c1 To c2 For n = r1 To r2 s = Cells(n, m) MsgBox (s) Next n Next m End Sub セル範囲は自分で(手動で)選ぶものと仮定して、 選んだ直後は一番左上のセルがアクティブセルです。 したがって最初の値はCells(r1,c1)となります。 次にSelection.Rows.Count は選んだセルの行数ですから、 r2,c2はそれぞれ選んだ範囲の右下のセル番地です。 ちょっと解りづらいかもしれませんが、お試し下さい。
お礼
’アクティブなセル’とは’入力できる1つのセル’という事を知りませんでした。勉強になりました。素早いご回答に感謝いたします。
お礼
試したい事ができました。 素早いご回答に感謝致します。