目次
究極の条件判定
こんにちは。伊川(@naonaoke)です。
IF構文、Select Case構文など、このブログで紹介してきました。
今回は、条件判定の構文を使わない条件判定の方法を紹介します。
問題提起
何か良い方法はないだろうか?
Visibleプロパティ、Enabledプロパティを使う
Visibleは、Trueでボタンが現れます。Falseでボタンが消えます。
Enabledは、Trueでボタンをクリックできます。Falseでボタンをクリックできなくなります。
入力ミスを防止するためには使える技になります。
ユーザーフォーム編
ボタン作成
「開発タブ」⇒「Visual Basic」をクリックします。
「挿入」⇒ 「ユーザーフォーム」を選択します。
このようにボタンを選択後、フォーム上でドラックします。
ボタンができました。
この赤枠の中が、ボタンのレイアウトを決めます。
文字のFontを24に変更して、文字を大きくします。
文字が大きくなりました。
文字は普通に変更できます。
ここでボタンのBackの色を変更できます。
色が変更になりました。
この要領で、ユーザーフォームを作成します。
このように作成します。
この青のボタンをクリックしたときに、【とまれ】をクリックできなくします。
【青】のボタンの名前は、【CommandButton1】です。
【すすめ】のボタンの名前は、【CommandButton2】です。
【赤】のボタンの名前は、【CommandButton3】です。
【とまれ】のボタンの名前は、【CommandButton4】です。
Private Sub CommandButton1_Click() CommandButton2.Enabled = True CommandButton4.Enabled = False End Sub Private Sub CommandButton2_Click() MsgBox "せいかい" End Sub Private Sub CommandButton3_Click() CommandButton2.Enabled = False CommandButton4.Enabled = True End Sub Private Sub CommandButton4_Click() MsgBox "せいかい" End Sub
フォームを起動するときのコード
Sub 起動() With UserForm1 .CommandButton4.Enabled = False .CommandButton2.Enabled = False .Show End With End Sub
Withステートメントでコードを簡略化します。
WorkSheet編
ボタン作成
「開発」⇒「デザインモード」⇒「挿入」⇒「ActiveXコントロール」⇒「コマンドボタン」
ボタンができました。
ボタンの編集をします。
必ず、「デザインモード」を選択したままにしてください。
ボタンを右クリック⇒「コマンドボタンのオブジェクト」をクリックします。
文字が編集できました。
今度は、「プロパティ」をクリックします。
ユーザーフォーム作成時と同じように、この赤枠の中で、ボタンの編集をします。
Private Sub CommandButton1_Click() CommandButton3.Visible = False CommandButton4.Visible = True End Sub Private Sub CommandButton2_Click() CommandButton4.Visible = False CommandButton3.Visible = True End Sub Private Sub CommandButton3_Click() Range("C2") = "すすめ" End Sub Private Sub CommandButton4_Click() Range("C2") = "とまれ" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) CommandButton3.Visible = False CommandButton4.Visible = False MsgBox "クイズ開始" End Sub
Sheet1に上記のコードを仕込みます。
Worksheet_SelectionChange
このコードの意味は、少し特殊なのですが、開いているWorkSheet上で何かが起こったら、コードが実行されます。
つまり、何かセルをクリックすると、リセットされ、【クイズ開始】とメッセージボックスが表示されます。
あとは、Visibleプロパティを使って、ボタンを出現させる、消すというコードを記載します。
まとめ
VBAは、何かの成果物を作成することが、一番のスキル向上になります。
子供がいらっしゃる方は、ぜひ、Excelで遊んでみてください。
そこから得られる知識は、間違いなく、みなさんの業務に生かされると思います。