VBA別館・Python別館
checkbox (完) - Tak
2018/08/20 (Mon) 21:28:06
よくアンケート調査などに出てくるチェックボックスです。 ユーザーフォームに張り付けて使いますが、sheet上に置いても使えます。
① sheet上にCheckBox1-3を張り付けます
Re: checkbox - Tak
2018/08/21 (Tue) 08:02:51
② Checkboxの名前を変えます
プロパティーを開いて、CaptionやFontで自分の好きなものに変更できます。
この後それぞれのCheckBoxのcodeページに、処理を書いていきます。
Re: checkbox - Tak
2018/08/21 (Tue) 20:40:45
③ Checkbox1のcodeページを開きます
Sub CheckBox1_Click()
End Sub
が自動的にできております。 このSubとEndの何をやらせるかのcodeを書けばよいのです。
CekcBoxはonとoffが有りますので、少しややこしいです。 onの時はこうする、offの時はこうすると書く必要があります。
CheckBox1のコードの表示をクリックした時、何も起きないように見える時がありますが、codeページがsheetの後ろで見えない時も有りますのでご注意ください。
Re: checkbox - Tak
2018/08/22 (Wed) 12:00:41
④ codeを書く準備
・checkBox1,2,3をsheetに張り付けます
・ユーザーフォーム1を作成します
・ユーザーフォーム1のプロパティーから「ShowModal」の部分を「false」にしておきます。 これはユザーフォームが開いているときでも、sheetへの書込みが出来るようにです。
これで準備完了です。 次回はそれぞれにcodeを書きます。
Re: checkbox - Tak
2018/08/22 (Wed) 20:18:34
⑥ codeを書きました
-----------------------------
Option Explicit
Private Sub CheckBox1_Click()
'現在の時刻をセルに表示する
Range("D3").Value = Now()
End Sub
Private Sub CheckBox2_Click()
'チェックのon/offで表示を変える
If CheckBox2.Value = True Then
Range("D5").Value = Now()
Else
Range("D5").Value = ""
End If
End Sub
Private Sub CheckBox3_Click()
'ユーザーフォームを表示させます
'UserForm1のプロパティの ShowModalを = Falseにしておく
If CheckBox3.Value = True Then
UserForm1.Show
Else
UserForm1.Hide
End If
End Sub
-----------------------
次回このcodeの意味を書きます。 今までの説明で何をしようとしているのかが、大分分かりかけてきたと思いますが如何ですか。
Re: checkbox - Tak
2018/08/23 (Thu) 07:51:46
⑦ CheckBox2のcodeの説明
checkBox1は簡単なので説明省略。
Private Sub CheckBox2_Click()
'チェックのon/offで表示を変える
If CheckBox2.Value = True Then
Range("D5").Value = Now()
Else
Range("D5").Value = ""
End If
End Sub
--------------------------------
チェックボックスをon,offする度にこの処理が行われます。
checkbox1は一度表示されたら、消されないのでその後のクリックで表示は変わりませんが、checkbox2はそれを改善した例です。
・もしonなら、セルに今の時刻を表示する
・もしoffなら、その表示を消す
終わりがなくいつでも処理が出来ます。
Re: checkbox - Tak
2018/08/23 (Thu) 19:41:00
⑧ CheckBox3のcodeの説明
--------------------------
Private Sub CheckBox3_Click()
'ユーザーフォームを表示させます
'UserForm1のプロパティの ShowModalを = Falseにしておく
If CheckBox3.Value = True Then
UserForm1.Show
Else
UserForm1.Hide
End If
End Sub
------------------------
if文の決まり文句は
if XXX=YY then
何々しなさい
else
何々しなさい
end if
という順です。
更に詳しく言うと
If(もし) CheckBox3がチェックされてYes(☑)なら、Userfrom1をshow(表示)しなさいと言うことです。
Else(それ以外は)なら、Userform1をHide(非表示)しなさい、ということです。
この処理が Sub~End Subの間に書かれているのです。
だから二度目にチェックボックスをクリックすると、チェックは外れますので、Elseの処理が行われてuserform1は非表示となるのです。
全部CheckBoxをチェックすると図の様になります。
・Checkbox1は最初のクリックで現在の時刻が表示されますが、あとは何回チェックしても変わりません。
・Checkbox2はクリックする度にon/offの時の処理が違いますので、表示と非表示が交互に出てくるのです。
・Checkbox3は、交互にuserform1が表示/非表示となるのです。
これでCheckBoxの動作はお分かりと思いますので、この項終わります。