ユーザーフォームの初期化(Initialize)[とりあえず使えるエクセルユーザーフォーム超入門]
Lesson3 これだけは覚えておきたい基本機能
これまでに紹介した方法ではユーザーフォームを表示させた際に、あらかじめ設定した固定値しか表示できませんが、例えば、「数値や文字列を入力するための テキストボックス(TextBox)」で紹介した「初期値を表示しておく」でも触れたように、前回入力した内容を初期値としてテキストボックスに表示しておくなど、状況によっては初期値を変更したい場合があります。そんな時に便利な機能がこれから紹介するイニシャライズ機能(Initialize)です。
スポンサーリンク
具体的には対象となるユーザーフォームのコードに下記のプロシージャ(Private Sub UserForm_Initialize() ~ End Sub)を追加します。今回はTextBox1にセル(A1)の値をあらかじめ割り当てておくこととします。
Private Sub UserForm_Initialize()
'テキストボックスにセル(A1)の値を入力
TextBox1.Value = Range("A1")
End Sub
ラベルでも同様にプロパティの設定とは異なる変更を加えることができます。今回は文章(Caption)と文字色(ForeColor)、文字サイズ(Font.Size)を変更します。
Private Sub UserForm_Initialize()
'テキストボックスにセル(A1)の値を入力
TextBox1.Value = Range("A1")
'ラベル1の設定を変更
Label1.Caption = "★★★を入力してください。" '説明文の変更
Label1.ForeColor = "&HFF0000" 'フォント色を変更
Label1.Font.Size = "8" 'フォントサイズを変更
End Sub
なお、フォント色の設定値はRGBのそれぞれの値を使って、
"&H"+"FF(Blue)"+"00(Green)"+"00(Red)の形式で入力します(RGBの順番が逆になります)。
また、Label1のように複数の設定を同時に変更する場合はWith文が便利です。このWith文はフォームだけでなく、エクセルVBAマクロ全般的に広く使用できる便利な構文なので、是非使えるようにしておきましょう。
Private Sub UserForm_Initialize()
'テキストボックスにセル(A1)の値を入力
TextBox1.Value = Range("A1")
'ラベル1の設定を変更
With Label1
.Caption = "★★★を入力してください。" '説明文の変更
.ForeColor = "&HFF0000" 'フォント色を変更
.Font.Size = "8" 'フォントサイズを変更
End With
End Sub
1 2 3 4 5 6 7 8 9 10 11 12 13 14
スポンサーリンク
ユーザーフォームを実行する[とりあえず使えるエクセルユーザーフォーム超入門]
Lesson2 ユーザーフォームの作り方 基礎の基礎
フォームは標準バーにあるアイコン「ユーザーフォームの実行」をクリックしても実行できるのですが、ワークシートにボタンを配置して、それをクリックすることでフォームが実行できるとスマートで便利です。
そこで、ワークシート上にボタンを作ります。作り方の詳細は「マクロを実行するボタンを作る方法(エクセルVBA超入門)」を参照してください。
このボタンにフォームを呼び出す命令をプログラムします。
Sub ボタン1_Click()
UserForm1.Show '(1)ユーザーフォームを表示
End Sub
これでOK。簡単にフォームを呼び出し、フォームで入力した内容をセル(A1)に入力することができました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
スポンサーリンク
次の処理に進めるために重要なコマンドボタン(CommandButton)[とりあえず使えるエクセルユーザーフォーム超入門]
Lesson2 ユーザーフォームの作り方 基礎の基礎
コマンドボタンの配置
テキストボックスなどに指定された文字を入力した後、その結果をどうするのか、例えば決められたセルにテキストボックスの値を割り当てる等の処理をプログラムする必要があります。そのために必要となるのがコマンドボタン(CommandButton)。ひとつのフォームに複数配置し、処理を分岐することもできます。
ツールボックスで「テキストボックス」を選択し、フォーム上の始点でクリックし、そのまま終点までドラッグすることで、ボタン作成するので、大きさも自由自在です。
ボタン表面の文字を変更する
ボタンを作成したら、ボタン表面にはそのボタンの名前(オブジェクト名/例:CommandButton1)が表示されていますが、このままではボタンの役割が分かりませんので、このボタン表面の文字を変更しましょう。Caption(プロパティ)に入力する、または、直接クリックして変更することができます。
ちなみに、この文字はラベル(Label)と同様に[Font]でフォントの種類や大きさ、スタイルを[ForeColor]で文字色を変更することができます。また、[BackColor]でボタンの色を変更することもできます。
スポンサーリンク
ボタンをクリックしたときの処理マクロを作成する
一連のフォームの作成においてこのコマンドボタンをクリックして、マクロの処理を行う流れが最も重要です。まずは、上述したテキストボックスに入力した文字列をセル[A1]に入力するという、シンプルなパターンで枠組みを紹介します。
現在、フォームが表示されている状態なので、プロジェクトウィンドウにあるアイコンをクリックして、コードの表示画面に切り替えます。ボタンを右クリックして[コードの表示]でも切り換えることができます。こうすることでマクロの記述画面が表示されますので、この中に処理するマクロを記述します。
Sub CommandButton1_Click()
Range("A1") = UserForm1.TextBox1 '---- 解説(1)
Unload Me '---- 解説(2)
End Sub
[解説]
(1)セルA1に「UserForm1」の「TextBox1」の値を割り当てる
テキストボックスが複数ある場合は、「TextBox1」(オブジェクト名)を修正して対応します。
(2)ユーザーフォームを閉じる
これがないと(1)の処理が無事に終わっても、フォームは表示されたままになります。フォームを閉じるには、このように「Unload(=解放する) Me(=現在のユーザーフォーム)」とします。
連続して同じ作業をするのであれば、敢えて「Unload Me」を記載しない方法もあります。このサンプルの場合は、ボタンをクリックするごとにセル(A1)が上書きされます。ただ、このままだと×マークのクリックする以外に、フォームを閉じることができませんので、もうひとつボタンを作成し、そこのコードに「Unload Me」を記載するとスマートです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
スポンサーリンク
数値や文字列を入力するための テキストボックス(TextBox)[とりあえず使えるエクセルユーザーフォーム超入門]
Lesson2 ユーザーフォームの作り方 基礎の基礎
テキストボックスの配置
数値や文字列を入力するためのものがテキストボックス(TextBox)。ツールボックスで「テキストボックス」を選択し、フォーム上の始点でクリックし、そのまま終点までドラッグすることで、入力できる領域を作成します。
折り返して表示ができるようにする
長文を見やすく入力するためには、MultiLine(プロパティ)をTrueに変更し、テキストボックス内で折り返して表示させる設定とします。
スポンサーリンク
初期値を表示しておく
テキストボックス内にあらかじめ文字を入力しておくこともできます。代表的な方法はText(プロパティ)に入力しておくことです。ただし、この方法では初期設定された文字列しか対応できません。
しかし、状況によっては、それぞれの状況に応じてあらかじめ表示しておく文字列が異なる場合が多々あります。そんな時は、プロパティの変更ではなく、マクロにて対応することとなります。詳細は後述の「ユーザーフォームの初期化をする」にて紹介します。
IME(入力モード)の選択
入力項目によっては、半角英数モードであったり、ひらがなモードにあらかじめ設定しておいた方が便利なケースが多々あります。IME Mode(プロパティ)にて設定を変えることができます。8種類の設定が選べますが、それぞれの内容は下記の表のとおりです。
設定値 | 設定 | 内容 |
0 | fmIMEModeNoControl | Windows 管理とする |
1 | fmIMEModeOn | 以前の入力モードでオンにする |
2 | fmIMEModeOff | オフにする |
3 | fmIMEModeDisable | IMEを利用禁止にする |
4 | fmIMEModeHiragana | 全角ひらがな入力モードにする |
5 | fmIMEModeKatakana | 全角カタカナ入力モードにする |
6 | fmIMEModeKatakanaHalf | 半角カタカナ入力モードにする |
7 | fmIMEModeAlphaFull | 全角英数入力モードにする |
8 | fmIMEModeAlpha | 半角英数入力モードにする |
文字数の上限を制限する
MaxLength(プロパティ)に数値を入れておくことで、文字数の上限を設定することができます。制限をしない場合は「0(ゼロ)」としておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
スポンサーリンク
説明文や見出しの配置に欠かせない ラベル(Label)[とりあえず使えるエクセルユーザーフォーム超入門]
Lesson2 ユーザーフォームの作り方 基礎の基礎
ラベルの配置と文章の反映
フォーム上で固定の文字列を表示する際に使用するのがラベル(Label)。説明文や見出しの配置には欠かせません。ツールボックスで「ラベル」を選択し、フォーム上の始点でクリックし、そのまま終点までドラッグすることで、ラベルの枠組みを作成します。
枠組み内に入力する文章は、ラベル自身をクリックして入力するほか、Caption(プロパティ)に入力することでも反映できます。
ラベルの文字種の変更
ラベルの文字のフォントやスタイル、サイズは「Font(プロパティ)」にて変更することができます。文字色は「ForeColor(プロパティ)」で変更できます。代表的な色を選択するのであれば、プロパティの入力欄右側に出現する▼マークをクリックすることで選ぶことのできる「パレット」が便利。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
スポンサーリンク
ユーザーフォームの調整(UserForm)[とりあえず使えるエクセルユーザーフォーム超入門]
Lesson2 ユーザーフォームの作り方 基礎の基礎
プロパティを変更することで、ユーザーフォームの大きさや名称、色などの設定を変えることができます。これはユーザーフォームに限らず、これから紹介する様々なツールに対しても同様の基礎となります。このプロパティを変更して、フォームの大きさと名称を変更してみましょう。
ユーザーフォームの大きさを調整する
プロパティの中に「Height(高さ)」「Width(幅)」の項目があります。ここにサイズを入力することで、フォームサイズを変更することができます。なお、フォームの大きさはフォーム自身の角や辺にあるポイントをドラッグすることでも、サイズを変えることができます。
スポンサーリンク
ユーザーフォームの名称を変更する
ユーザーフォームのタイトル部分の名称を変更するには「Caption」を変更します。フォームの役割などを説明するタイトルにすると分かりやすくなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
スポンサーリンク
ユーザーフォームの基盤を作る[とりあえず使えるエクセルユーザーフォーム超入門]
Lesson1 ユーザーフォーム 初めの第一歩
ユーザーフォームの基盤作成
Visual Basic Editorを開き、ユーザーフォームを挿入することで、ユーザーフォームの基盤が作成されます。
([開発]タブ>[コード]>Visual Basic>挿入>ユーザーフォーム)
「[開発]タブ」が表示されていない場合、下記の記事を参照してください。
k-create.hatenadiary.com
ユーザーフォームでできること
ユーザーフォームの基盤を作成すると、ツールボックスという小さなウィンドウが表示されます。([表示]>[ツールボックス]でも表示できます)
この「とりあえず使えるエクセルユーザーフォーム超入門」では、最低限必要となる「(1)ラベル」「(2)テキストボックス」「(3)コマンドボタン」と使えるようになっておきたい基本機能「(4)コンボボックス」「(5)チェックボックス」「(6)オプションボタン」に絞って紹介します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
スポンサーリンク