好みの幅に列幅を変更するマクロ

列幅をユーザーに聞いてから変更するマクロ
SUMIF

マクロ 13回

好みの幅に列幅を変更するマクロ 

マクロ講座12回からの続きです。
今回は、列幅を好みの数値で設定します。
(サンプルファイルは、こちらから マクロ講座13回サンプルデータ

マクロの中身を見てみましょう。
Sub 列幅()
    Selection.ColumnWidth = 13
    End Sub    
Selection.ColumnWidth = 13 で
選択してあるものの列幅を13にするという意味になります。

このままでは、列幅を13にしたいときにしか使えません。

そこで、列幅は、その都度、入力した数値=変数で変更できるように、このマクロを変更していきたいと思います。

好みの幅に列幅を変更するマクロ 変数を宣言する


(1)列幅を、入力した数値で変更するためには、変数の宣言をしてやります。

宣誓!!
これから入力した数値をプログラム上で、
数値として使いますよ。


 と、宣言してやると、
 コンピューターは、プログラムを処理していく中で、プログラム言語以外の
 変数をきちんと理解して処理します。

(2)宣言はどうやるかというと、相手はPCですからコードで書くと、 


Dim 入力した数値
と書きます

Dim 入力した数値

宣誓!!
これから入力した数値をプログラム上で、
数値として使いますよ。


 という意味になるわけです。下図↓

通常は、

Dim 入力した数値 As Variant

というように、後ろにAs Variant等をつけます。

As Variantは、変数の型というやつで、省略することができます。
省略すると、すべてAs Variantで処理されます。
(変数の型は、必要になったら詳しく説明します。)
(サンプルは、変数の型を省略しています。)
(3)そして、入力した数値はどこから持ってくるかと言うと、
 変数等の入れ物としてExcel がちゃんと用意してくれた

  インプットボックス
  というのを使います。

  入力した数値 = InputBox("適当な数値を入力してよ")
あるいは、
  入力した数値 = InputBox("数値を入力してくださいませ")

 と続けてれば、インプットボックスに入力した数値を認識してくれます。

(4)コードをまとめると、以下のようになります。

Sub 列の幅を変更する()
''列の幅を変更する
    Dim 入力した数値 As Variant
    入力した数値 = InputBox("適当な数値を入力してよ")
        Selection.ColumnWidth = 入力した数値
End Sub    
(5)では、これでマクロを実行してみましょう。
セル、あるいは、列を選択して、 マクロ実行ボタンをクリックします。
「列の幅を変更する」を実行 どうですか?
インプットボックスが表示されましたね。
お好きな列幅にする数値を入れてください。
通常はこれでいいのですが、もしこのマクロを共用のブックで使うことがある場合、 もし誰かが、数値以外を入れたらどうなるでしょう。
この場合、エラーで終了しなければなりません。
(6)【補足】
 
 普通数値を入力と書いてあれば、数値以外を入力する人はいないと
 思いますが、万が一に備えて、以下のコードに書き換えたほうが親切です。
 
インプットボックスに数値以外が入らないようにするために、
コードに、
If IsNumeric(入力した数値) Then
の1行を加えましょう。
Sub 列の幅を入力した数値で変更する2()
''列の幅を変更する
    Dim 入力した数値 As Variant
    入力した数値 = InputBox("新しい列幅を入力してください。")
    If IsNumeric(入力した数値) Then
        Selection.ColumnWidth = 入力した数値
    End If
End Sub    
 End If は、おわりということ。
 IsNumeric は、数値判定の関数です。
 数値以外が入力されると、終了します。

こちらもおすすめ