好みの幅に列幅を変更するマクロ
マクロ 13回
好みの幅に列幅を変更するマクロ
マクロ講座12回からの続きです。
今回は、列幅を好みの数値で設定します。
(サンプルファイルは、こちらから マクロ講座13回サンプルデータ)
マクロの中身を見てみましょう。
選択してあるものの列幅を13にするという意味になります。
このままでは、列幅を13にしたいときにしか使えません。
そこで、列幅は、その都度、入力した数値=変数で変更できるように、このマクロを変更していきたいと思います。
Sub 列幅() Selection.ColumnWidth = 13 End SubSelection.ColumnWidth = 13 で
選択してあるものの列幅を13にするという意味になります。
このままでは、列幅を13にしたいときにしか使えません。
そこで、列幅は、その都度、入力した数値=変数で変更できるように、このマクロを変更していきたいと思います。
好みの幅に列幅を変更するマクロ 変数を宣言する
(1)列幅を、入力した数値で変更するためには、変数の宣言をしてやります。
宣誓!!
これから入力した数値をプログラム上で、
数値として使いますよ。
と、宣言してやると、
コンピューターは、プログラムを処理していく中で、プログラム言語以外の
変数をきちんと理解して処理します。
(2)宣言はどうやるかというと、相手はPCですからコードで書くと、
Dim 入力した数値
と書きます
Dim 入力した数値
で
宣誓!!
これから入力した数値をプログラム上で、
数値として使いますよ。
という意味になるわけです。下図↓
![](macro/macro13_1.png)
Dim 入力した数値
と書きます
Dim 入力した数値
で
宣誓!!
これから入力した数値をプログラム上で、
数値として使いますよ。
という意味になるわけです。下図↓
![](macro/macro13_1.png)
通常は、
Dim 入力した数値 As Variant
というように、後ろにAs Variant等をつけます。
As Variantは、変数の型というやつで、省略することができます。
省略すると、すべてAs Variantで処理されます。
(変数の型は、必要になったら詳しく説明します。)
(サンプルは、変数の型を省略しています。)
Dim 入力した数値 As Variant
というように、後ろにAs Variant等をつけます。
As Variantは、変数の型というやつで、省略することができます。
省略すると、すべてAs Variantで処理されます。
(変数の型は、必要になったら詳しく説明します。)
(サンプルは、変数の型を省略しています。)
(3)そして、入力した数値はどこから持ってくるかと言うと、
変数等の入れ物としてExcel がちゃんと用意してくれた
インプットボックス
というのを使います。
入力した数値 = InputBox("適当な数値を入力してよ")
あるいは、
入力した数値 = InputBox("数値を入力してくださいませ")
と続けてれば、インプットボックスに入力した数値を認識してくれます。
変数等の入れ物としてExcel がちゃんと用意してくれた
インプットボックス
というのを使います。
入力した数値 = InputBox("適当な数値を入力してよ")
あるいは、
入力した数値 = InputBox("数値を入力してくださいませ")
と続けてれば、インプットボックスに入力した数値を認識してくれます。
(4)コードをまとめると、以下のようになります。
Sub 列の幅を変更する() ''列の幅を変更する Dim 入力した数値 As Variant 入力した数値 = InputBox("適当な数値を入力してよ") Selection.ColumnWidth = 入力した数値 End Sub
(5)では、これでマクロを実行してみましょう。
セル、あるいは、列を選択して、 マクロ実行ボタンをクリックします。
「列の幅を変更する」を実行 どうですか?
![](macro/macro13_2.png)
セル、あるいは、列を選択して、 マクロ実行ボタンをクリックします。
「列の幅を変更する」を実行 どうですか?
![](macro/macro13_2.png)
インプットボックスが表示されましたね。
お好きな列幅にする数値を入れてください。
お好きな列幅にする数値を入れてください。
![](macro/macro13_4.png)
通常はこれでいいのですが、もしこのマクロを共用のブックで使うことがある場合、
もし誰かが、数値以外を入れたらどうなるでしょう。
![](macro/macro13_5.png)
この場合、エラーで終了しなければなりません。
![](macro/macro13_6.png)
![](macro/macro13_6.png)
(6)【補足】
普通数値を入力と書いてあれば、数値以外を入力する人はいないと
思いますが、万が一に備えて、以下のコードに書き換えたほうが親切です。
インプットボックスに数値以外が入らないようにするために、
コードに、
If IsNumeric(入力した数値) Then
の1行を加えましょう。
IsNumeric は、数値判定の関数です。
数値以外が入力されると、終了します。
普通数値を入力と書いてあれば、数値以外を入力する人はいないと
思いますが、万が一に備えて、以下のコードに書き換えたほうが親切です。
インプットボックスに数値以外が入らないようにするために、
コードに、
If IsNumeric(入力した数値) Then
の1行を加えましょう。
Sub 列の幅を入力した数値で変更する2() ''列の幅を変更する Dim 入力した数値 As Variant 入力した数値 = InputBox("新しい列幅を入力してください。") If IsNumeric(入力した数値) Then Selection.ColumnWidth = 入力した数値 End If End SubEnd If は、おわりということ。
IsNumeric は、数値判定の関数です。
数値以外が入力されると、終了します。