• ベストアンサー

VBAでダイアログBoxに入力された列を処理したい

VBAで現在Columns("H:H")のように特定の列をコードの中に記載して処理を行っています。(現在であればH列) これをH列以外にも他の列で行いたいことがあるのですが、毎回コードを開いて列を書き換えるのは手間がかかります。 VBAで処理の前にダイアログBoxに処理したい列を入力してその列を処理できればよいと考えているのですが、どのようなコードにすればよいでしょうか? どなたかお詳しい方がいらっしゃいましたらご教示をよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.3

Sub sample()  Dim ColNum As String  ColNum = InputBox("列番号をアルファベットで指定してください")  Columns(ColNum & ":" & ColNum).ColumnWidth = 30 End Sub こんなコードを期待していますでしょうか?

englaw
質問者

お礼

ありがとうございます。 まさにこちらのようなコードを求めていました。

その他の回答 (2)

  • MT765
  • ベストアンサー率57% (2091/3632)
回答No.2

開始列と終了列をそれぞれ変数 i , j などにして Range(Columns(i), Columns(j)) とすれば良いような気がします。 入力部分はユーザーフォームで列をアルファベットで入力するようにして 入力がAなら1、Cなら3などを i と j に代入するようにすればOKかと。 全く確認していないので間違っていたらすみません。

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

>ダイアログBoxとは、どんなもののこと? ーー 下記やって見た。役立つかな? VBE画面で、実行して、InputBoxのダイアロウグ?画面が、VBEの画面で、出ない(Sheet1の画面で出す)ようにするのが、苦労した点。 下記Type:=8はシート(Sheet1)の上で、列のどれかのセルをマウスで選択すると、実行が進む。 ーーー エクセルを開いていて、Sheet1を使っている、として、 標準モジュールに Sub test01() Dim wd As Window Set wd = ThisWorkbook.Windows(1) Call AppActivate(wd.Caption) Worksheets("Sheet1").Activate '-- Set p = Application.InputBox("シート上で列を指定", Type:=8) MsgBox p.Address(False, False) 'C1セルを選択すると、C1が返る MsgBox Worksheets("Sheet1").Range(p.Address).Column 'C1セルを選択すると、3が返る ’これらの、どちらかの値を使って列指定 End Sub ーー Inpurboxは、 http://officetanaka.net/excel/vba/tips/tips37.htm 実は奥が深いInputBox を読んでください。

関連するQ&A