ホーム > ユーザーフォーム > Lesson7: トグルボタン

トグルボタン
トグルボタン トグルボタン
トグルボタンは、二者択一、あるいは項目のオン/オフの選択状態をボタンで
表示する場合などに使われます。
トグルボタン
前の項目で作ったユーザーフォーム(テストの点数の入力)を変更してみます。
チェックボタンを消して、トグルボタンボタンに変更。
入力したい科目を(トグルボタンで)選んで、入力できるように変更してみます。
まずはチェックボタンを消去。教科を書いてあるラベルも消去。
トグルボタンを設置します。
トグルボタン
トグルボタン(ToggleButton1)のプロパティを設定します。
プロパティ 設定
オブジェクト名 tglKokugo
Caption 国語
同様に、算数、理科、社会も設置します。
残りのトグルボタンを配置
算数は
プロパティ 設定
オブジェクト名 tglSansu
Caption 算数
理科は
プロパティ 設定
オブジェクト名 tglRika
Caption 理科
社会は
プロパティ 設定
オブジェクト名 tglSyakai
Caption 社会
2007年1月
トグルボタン トグルボタン その2
トグルボタンを押すと、点数を入力できるようにします。
さらに、もう一度押すと、点数の入力ができないようします。
トグルボタンを押したとき
トグルボタン押下時
  オブジェクト名.Value = True

押されていないとき(もう一度押したとき)
  オブジェクト名.Value = False

トグルボタンのValueプロパティの値が変更されたとき、Changeイベントが発生します。
イベントとは、「ブックを開く」、「シートを選択する」などの特定の操作。
イベントプロシージャは、イベントをきっかけとして実行するプロシージャ。
そして、イベントプロシージャの構文は、
Private Sub オブジェクト名_イベント名(引数)

  イベント発生時に実行する処理
End Sub


今回は、Changeイベントを使って、トグルボタンが押されたとき、
または、もう一度押されたときの処理を実行します。

イベントプロシージャの作成します。
対象となるモジュールを選択。ここでは、ユーザーフォーム(frmEntry)を選択。
オブジェクトボックスで、tglKokugoを選択。
オブジェクトボックス
次にプロシージャボックスで、Changeを選択。
プロシージャボックス
すると、イベントプロシージャができます。
Private Sub tglKokugo_Change()

End Sub

ここに処理を書きます。
2007年1月
トグルボタン トグルボタン その3
トグルボタンが押されたとき、テキストボックスに入力できるようにします。
テキストボックス入力可にするには、オブジェクト名.Enabled で。
Private Sub tglKokugo_Change()

  'トグルボタン変更(国語)
  
  If tglKokugo.Value = True Then
    txtKokugo.Enabled = True
  Else
    txtKokugo.Enabled = False
  End If
  
End Sub

同様に、理科、算数、社会もします。
Private Sub tglRika_Change()

  'トグルボタン変更(理科)
  
  If tglRika.Value = True Then
    txtRika.Enabled = True
  Else
    txtRika.Enabled = False
  End If
  
End Sub

Private Sub tglSansu_Change()

  'トグルボタン変更(算数)
  
  If tglSansu.Value = True Then
    txtSansu.Enabled = True
  Else
    txtSansu.Enabled = False
  End If
  
End Sub

Private Sub tglSyakai_Change()

  'トグルボタン変更(社会)
  
  If tglSyakai.Value = True Then
    txtSyakai.Enabled = True
  Else
    txtSyakai.Enabled = False
  End If
  
End Sub

これで、トグルボタンを押すと入力でき、もう一度押すと入力できなるなります。
でもユーザーフォーム(frmEntry)を開いたときは、すでに入力できる状態。
開いただけでは、入力できないように変更します。
ユーザーフォームを開いたときのイベントは、
Private Sub UserForm_Initialize()

  txtKokugo.Enabled = False
  txtRika.Enabled = False
  txtSansu.Enabled = False
  txtSyakai.Enabled = False
  
End Sub

前回作った、入力ボタンを押したときの処理も変更します。
オプションボタンに関係する処理を消します。
Private Sub cmdEntry_Click()

  '入力ボタン
  
  Range("B3").Value = txtNo.Value
  Range("C3").Value = txtName.Value
  
  Range("D3").Value = txtKokugo.Value
  Range("E3").Value = txtSansu.Value
  Range("F3").Value = txtRika.Value
  Range("G3").Value = txtSyakai.Value
  
  '性別
  If optBoy.Value = True Then
    Range("I3").Value = "男"
  ElseIf optGirl.Value = True Then
    Range("I3").Value = "女"
  Else
    Range("I3").Value = "?"
  End If
  
  lblComment.Caption = "ワークシートに転記しました!"
  
End Sub

これを実行してみると、
トグルボタン
トグルボタンを押したときのみ、点数を入力することができるようになりました。
2007年1月