VBA別館・Python別館
OptionButton(完) - Tak
2018/08/24 (Fri) 08:31:53
checkboxと同じくらい使用頻度の高いオプションボタンの使い方をお話しします。
① 選択肢の表示に使うのが多いです。
作例はExcel VBAで作った「百人一首ゲーム」です。
今回の例では、OptionButtonが五個使用されております。
Re: OptionButton - Tak
2018/08/24 (Fri) 13:18:17
② OptionButtonを3個sheetに張り付けましょう
3個でも何個でも良いのですが、このうちの一個しか選択できません。
他のオプションボックスをクリックすると、今まで選択されていたOptionButtonはoffになります。
お試しください。
Re: OptionButton - Tak
2018/08/24 (Fri) 15:04:34
③ OptionButton操作用のデータを作っておきました
このデータから
・氏名を抽出する
・クラスが同じ人が何人いるか
・同じ地区の人は何人いるか
・男女の人数はそれぞれ何人か
などを抽出するプログラムを作りましょう。
たった15人ならこのプログラムは意味有りませんが、メンバーが100人、200人と増えて行ったら役に立ちますよ。
Re: OptionButton - Tak
2018/08/25 (Sat) 10:10:04
⑤ 氏名探索
寺田さんを探索してます。 図示したように寺田さんが存在しているときは、「ハイ、居ります」と表示されセル背景が赤くなります。
Re: OptionButton - Tak
2018/08/25 (Sat) 10:12:13
⑥ 寺田さんのセルを赤くする
図示したように寺田さんが存在しているときは、「ハイ、居ります」と表示されセル背景が赤くなります。
Re: OptionButton - Tak
2018/08/25 (Sat) 10:15:26
⑦ 名前検索のcodeを書きます
’コメントで簡単説明を追加しました。
----------------------------
Option Explicit
Dim i As Integer 'for~nextの回数変数
Private Sub OptionButton1_Click()
Dim str As String ’インプットボックスで使用する名前の変数
Dim name As String ’名前の変数
'全てのセルの色を消しておく ’赤色が残っていないようにする
Range("C:C").Interior.Pattern = xlNone
'名前の検索をする
str = InputBox("名前を入れて下さい。")
If str = "" Then OptionButton1.Value = False:
'もしinputboxに何も入っていなければ、このsubから抜け出す
Exit Sub
For i = 1 To 15
name = Cells(i + 12, 3) ’セルC13-C18までの氏名をnemeに取り込む
If name = str Then 'inputboxの名前とセルの名前が合致するとmsgboxが表示される
MsgBox ("はい、在籍しております。")
Cells(i + 12, 3).Select
Selection.Interior.Color = 255 7そのセルの背景を赤くする
OptionButton1.Value = False: Exit Sub 'もしが当社が居なければ、subから出る
End If
Next
MsgBox ("いいえ、その名前の方は在籍しておりません。")
OptionButton1.Value = False ’Checkboxの☑を外しておく
End Sub
--------------------------------
Re: OptionButton - Tak
2018/08/25 (Sat) 13:03:14
⑧ 組人数検索のcodeを書きます
-----------------------------
Private Sub OptionButton2_Click()
Dim kumi As String ’組番号用変数。integerでもよかった。
Dim kumininzu As Integer ’組人数用変数
'全てのセルの色を消しておく
Range("C:C").Interior.Pattern = xlNone
'組の人数を検索する
kumi = InputBox("組番号を入れて下さい。")
If kumi = "" Then OptionButton2.Value = False: Exit Sub
kumininzu = WorksheetFunction.CountIf(Range("D13:D27"), kumi)
MsgBox (kumi & "組の人数は = " & kumininzu & "人です")
OptionButton2.Value = False
End Sub
Re: OptionButton - Tak
2018/08/25 (Sat) 14:46:24
⑨ 同地域の人数検索code
図は同じですので省略
-------------------
Private Sub OptionButton3_Click()
Dim chiiki As String
Dim chiikininzu As Integer
'全てのセルの色を消しておく
Range("C:C").Interior.Pattern = xlNone
'地域の人数を検索する
chiiki = InputBox("地域の名前を入れて下さい。")
If chiiki = "" Then OptionButton3.Value = False: Exit Sub
chiikininzu = WorksheetFunction.CountIf(Range("E13:E27"), chiiki)
MsgBox (chiiki & "の人数は = " & chiikininzu & "人です")
OptionButton3.Value = False
End Sub
-------------------------------------
Re: OptionButton - Tak
2018/08/25 (Sat) 14:55:08
⑩ 男女別の人数チェックcode
Checkbox4、5のcodeを纏めて書きます。
----------------------------
Private Sub OptionButton4_Click()
Dim woman As String
Dim womanninzu As Integer
'全てのセルの色を消しておく
Range("C:C").Interior.Pattern = xlNone
'女性の人数を検索する
woman = InputBox("Wと入れて下さい。")
If woman = "" Then OptionButton4.Value = False: Exit Sub
womanninzu = WorksheetFunction.CountIf(Range("B13: B27 "), woman)
MsgBox ("女性の人数は = " & womanninzu & "人です")
OptionButton4.Value = False
End Sub
Private Sub OptionButton5_Click()
Dim man As String
Dim manninzu As Integer
'全てのセルの色を消しておく
Range("C:C").Interior.Pattern = xlNone
'男性の人数を検索する
man = InputBox("Mと入れて下さい。")
If man = "" Then OptionButton4.Value = False: Exit Sub
manninzu = WorksheetFunction.CountIf(Range("B13: B27 "), man)
MsgBox ("男性の人数は = " & manninzu & "人です")
OptionButton5.Value = False
End Sub