好みの幅に列幅を変更するマクロ
マクロ 13回
好みの幅に列幅を変更するマクロ
マクロ講座12回からの続きです。
今回は、列幅を好みの数値で設定します。
(サンプルファイルは、こちらから マクロ講座13回サンプルデータ)
マクロの中身を見てみましょう。
選択してあるものの列幅を13にするという意味になります。
このままでは、列幅を13にしたいときにしか使えません。
そこで、列幅は、その都度、入力した数値=変数で変更できるように、このマクロを変更していきたいと思います。
Sub 列幅() Selection.ColumnWidth = 13 End SubSelection.ColumnWidth = 13 で
選択してあるものの列幅を13にするという意味になります。
このままでは、列幅を13にしたいときにしか使えません。
そこで、列幅は、その都度、入力した数値=変数で変更できるように、このマクロを変更していきたいと思います。
好みの幅に列幅を変更するマクロ 変数を宣言する
(1)列幅を、入力した数値で変更するためには、変数の宣言をしてやります。
宣誓!!
これから入力した数値をプログラム上で、
数値として使いますよ。
と、宣言してやると、
コンピューターは、プログラムを処理していく中で、プログラム言語以外の
変数をきちんと理解して処理します。
(2)宣言はどうやるかというと、相手はPCですからコードで書くと、
Dim 入力した数値
と書きます
Dim 入力した数値
で
宣誓!!
これから入力した数値をプログラム上で、
数値として使いますよ。
という意味になるわけです。下図↓
Dim 入力した数値
と書きます
Dim 入力した数値
で
宣誓!!
これから入力した数値をプログラム上で、
数値として使いますよ。
という意味になるわけです。下図↓
通常は、
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)では、これでマクロを実行してみましょう。
セル、あるいは、列を選択して、 マクロ実行ボタンをクリックします。
「列の幅を変更する」を実行 どうですか?
セル、あるいは、列を選択して、 マクロ実行ボタンをクリックします。
「列の幅を変更する」を実行 どうですか?
インプットボックスが表示されましたね。
お好きな列幅にする数値を入れてください。
お好きな列幅にする数値を入れてください。
通常はこれでいいのですが、もしこのマクロを共用のブックで使うことがある場合、
もし誰かが、数値以外を入れたらどうなるでしょう。
この場合、エラーで終了しなければなりません。
(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 は、数値判定の関数です。
数値以外が入力されると、終了します。