VBA別館・Python別館

64458

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:12:51

⑤ 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の動作はお分かりと思いますので、この項終わります。

名前
件名
メッセージ
画像
メールアドレス
URL
文字色
編集/削除キー (半角英数字のみで4~8文字)
プレビューする (投稿前に、内容をプレビューして確認できます)

Copyright © 1999- FC2, inc All Rights Reserved.