Home » エクセルマクロ・Excel VBAの使い方 » Applicationオブジェクト » InputBoxで選択した列を取得する

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン1911 ビルド12228.20364 Microsoft Store)

「Inputbox で選択した列を取得」
という検索キーワードでアクセスがありました。

Excel VBAのApplication.InputBoxメソッドに関わる疑問を調べていた方による検索キーワードです。

[スポンサードリンク]

列を取得の可能性

ここで「列を取得」と表現されているのは、大きく2つの可能性があると私は考えています。列番号を取得したい場合と、列を表すRangeオブジェクトを取得したい場合の2つです。

拙著『いちばんやさしいExcel VBAの教本』の中に、プロパティは2種類あるというLessonを設けました。このLessonでプロパティには、単なるデータを取得するためのプロパティと、オブジェクトを取得するためのプロパティの種類があることを解説しています。

「Inputbox で選択した列を取得」
という疑問が、
列番号を取得したいのであれば単なるデータを取得するためのプロパティを利用し、列を表すRangeオブジェクトを取得したいのであればもちろん列を表すRangeオブジェクトを取得するプロパティを利用します。

InputBoxで選択した列番を取得するサンプル

列番号を取得したいのならば、以下のSubプロシージャが参考になるはずです。

Sub InputBox選択したセルの列番号を取得する()
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プロシージャが参考になるでしょう。

Sub InputBoxで選択したセルの列を表すRangeを取得する()
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で選択した列を取得する

「Applicationオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.