[[20230216125444]] 『チェックボックスにチェックを入れると他のセルが』(初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『チェックボックスにチェックを入れると他のセルが無効になる方法』(初心者)

質問です。

以下のようにセルに文字が入力されていたとして(□はチェックボックスです)
111、222それぞれ一つだけチェックボックスを入れたら他のチェックボックスにチェックは入れられないようにする方法が知りたいです。

111□ 
111□
111□
111□
222□
222□
222□
222□
222□


111☑︎
111□入力できない
111□入力できない
111□入力できない
222□入力できない
222☑︎
222□入力できない
222□入力できない
222□入力できない

わかりづらく申し訳ありませんが、ご教示いただけますと幸いです。

< 使用 Excel:unknown、使用 OS:unknown >


 それはチェックボックスではなくオプションボタン(ラジオボタン)で
 やるべきことでは?
(コナミ) 2023/02/16(木) 13:04:06

チェックボックスは標準コントロールですよね?
作ったチェックボックスとセルの紐づけは?

>チェックボックスにチェックを入れると他のセルが無効
無効とは?
1つ目のチェックボックスにチェックを入れると
A.2つ目以降の111に紐づけられたチェックボックスにチェックが入らないようになる
B.2つ目以降の111に紐づけられたチェックボックスにチェックを入れると1つ目のチェックボックスのチェックが外れる
どちらでしょう?

各チェックボックスごとに
checkbox1_click()でイベントを拾えばできそうですね

あと、気になった点として、
標準コントロールのチェックボックスであれば
ワークシートのどこにでも配置できますよね?
最初の疑問の「紐づけ」は
チェックボックスの位置をずらされて
111のチェックボックスのつもりが222の位置にされたら見た目では判断しずらいですよ。
(たつ) 2023/02/16(木) 13:29:54


シート上にCheckBox1〜10という名前のActiveXコントロールのチェックボックスがあるとして
シートモジュールに以下のコードを貼り付けます。

CheckBox1〜5、CheckBox6〜10を一つのグループとして
その中の一つにチェックを入れると他のチェックボックスがクリックできなくなります。
チェックの入ったボックスを再度クリックしてチェックを外すと
グループ内のチェックボックスは再度チェックを入れることができるようになります。

 Private Sub CheckBox1_Click()
   Call CheckboxGroup(1, (CheckBox1.Value) * -1)
 End Sub
 Private Sub CheckBox2_Click()
   Call CheckboxGroup(1, (CheckBox2.Value) * -2)
 End Sub
 Private Sub CheckBox3_Click()
   Call CheckboxGroup(1, (CheckBox3.Value) * -3)
 End Sub
 Private Sub CheckBox4_Click()
   Call CheckboxGroup(1, (CheckBox4.Value) * -4)
 End Sub
 Private Sub CheckBox5_Click()
   Call CheckboxGroup(1, (CheckBox5.Value) * -5)
 End Sub
 Private Sub CheckBox6_Click()
   Call CheckboxGroup(6, (CheckBox6.Value) * -6)
 End Sub
 Private Sub CheckBox7_Click()
   Call CheckboxGroup(6, (CheckBox7.Value) * -7)
 End Sub
 Private Sub CheckBox8_Click()
   Call CheckboxGroup(6, (CheckBox8.Value) * -8)
 End Sub
 Private Sub CheckBox9_Click()
   Call CheckboxGroup(6, (CheckBox9.Value) * -9)
 End Sub
 Private Sub CheckBox10_Click()
   Call CheckboxGroup(6, (CheckBox10.Value) * -10)
 End Sub

 Private Sub CheckboxGroup(ByVal StartNumber As Long, ByVal ClickedNumber As Long)
   Dim i As Long
   Dim buf As Boolean

   If ClickedNumber < 1 Then
     buf = True
   End If
   For i = StartNumber To StartNumber + 4
     If i <> ClickedNumber Then
       With ActiveSheet.OLEObjects("CheckBox" & i)
         .Enabled = buf
       End With
     End If
   Next
 End Sub

(ふなば) 2023/02/16(木) 14:34:10


まあ、普通はこれかと

>それはチェックボックスではなくオプションボタン(ラジオボタン)
(普通だよ) 2023/02/16(木) 18:57:26


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.