「Inputbox で選択した列を取得」
という検索キーワードでアクセスがありました。
Excel VBAのApplication.InputBoxメソッドに関わる疑問を調べていた方による検索キーワードです。
列を取得の可能性
ここで「列を取得」と表現されているのは、大きく2つの可能性があると私は考えています。列番号を取得したい場合と、列を表すRangeオブジェクトを取得したい場合の2つです。
拙著『いちばんやさしいExcel VBAの教本』の中に、プロパティは2種類あるというLessonを設けました。このLessonでプロパティには、単なるデータを取得するためのプロパティと、オブジェクトを取得するためのプロパティの種類があることを解説しています。
「Inputbox で選択した列を取得」
という疑問が、
列番号を取得したいのであれば単なるデータを取得するためのプロパティを利用し、列を表すRangeオブジェクトを取得したいのであればもちろん列を表すRangeオブジェクトを取得するプロパティを利用します。
InputBoxで選択した列番を取得するサンプル
列番号を取得したいのならば、以下のSubプロシージャが参考になるはずです。
On Error GoTo ErrHandl
Dim rng As Range
Set rng = Application.InputBox("セルを選択してください。", Type:=8)
rng.Select
MsgBox rng.Column
Exit Sub
ErrHandl:
Err.Clear
End Sub
Rangeオブジェクトに用意されているColumnプロパティを使えば、
MsgBox rng.Column
列番号を取得できます。
InputBoxで選択した列を表すRangeオブジェクトを取得するサンプル
列を表すRangeオブジェクトを取得したいのなら、以下のSubプロシージャが参考になるでしょう。
On Error GoTo ErrHandl
Dim rng As Range
Set rng = Application.InputBox("セルを選択してください。", Type:=8)
rng.Select
Set rng = rng.EntireColumn
MsgBox rng.Address(False, False)
Exit Sub
ErrHandl:
Err.Clear
End Sub
Rangeオブジェクトに用意されているEntireColumnプロパティを使えば、
Set rng = rng.EntireColumn
列を表すRangeオブジェクトを取得できます。
最終更新日時:2019-12-17 15:19
Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » InputBoxで選択した列を取得する