0
値(日付)を含むセルのExcelスプレッドシートにチェックボックスがあります。セルをクリックしたときに管理者が誤ってボックスをチェックするのを避けるため、チェックボックスをダブルクリックしてダニを登録する必要があります。私はワークシートを保護したくありません。なぜなら、複数の人が継続的に情報を編集しているからです。何か案は?ダブルクリックだけでチェックボックスをチェックする方法は?
値(日付)を含むセルのExcelスプレッドシートにチェックボックスがあります。セルをクリックしたときに管理者が誤ってボックスをチェックするのを避けるため、チェックボックスをダブルクリックしてダニを登録する必要があります。私はワークシートを保護したくありません。なぜなら、複数の人が継続的に情報を編集しているからです。何か案は?ダブルクリックだけでチェックボックスをチェックする方法は?
このシステムを試してみてください。チェックボックスがあるワークシートのコードシートにインストールします。
Option Explicit
Dim ChkVal() As Boolean
Dim EnableChk As Boolean
Private Sub Worksheet_Activate()
' 27 Oct 2017
Dim Shp As Shape
Dim Sn As String
ReDim ChkVal(Me.Shapes.Count)
For Each Shp In Me.Shapes
With Shp
If .Type = 12 And InStr(1, .Name, "checkbox", vbTextCompare) = 1 Then
ChkVal(Val(Mid(.Name, 9))) = .OLEFormat.Object.Object.Value
End If
End With
Next Shp
End Sub
Private Sub CbxChange(Cbx As MSForms.CheckBox)
' 27 Oct 2017
Dim Id As Integer
On Error GoTo ErrHandler
With Cbx
Id = Val(Mid(.Name, 9))
If Not EnableChk Then
Do Until .Value = ChkVal(Id)
.Value = Not .Value
Loop
Else
ChkVal(Id) = .Value
End If
End With
EnableChk = False
Exit Sub
ErrHandler:
If Err = 9 Then
Worksheet_Activate
Resume 0
Else
MsgBox "A programming error interrupted this procedure.", _
vbInformation, "Unidentified error"
End If
End Sub
Private Sub CheckBox1_Click()
CbxChange CheckBox1
End Sub
Private Sub CheckBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
EnableChk = True
End Sub
シートのすべてのチェックボックスには、最後の2つのようなイベントプロシージャのペアが必要です。私はそれをすばやくやってみました。