2017-10-27 1 views
0

Ich habe Kontrollkästchen in einer Excel-Tabelle in Zellen, die auch Werte (Daten) enthalten. Um zu vermeiden, dass Administratoren beim Klicken auf die Zelle versehentlich die Kontrollkästchen aktivieren, möchte ich das Kontrollkästchen so anpassen, dass ein Doppelklick zum Registrieren eines Häkchens erforderlich ist. Ich möchte das Arbeitsblatt nicht schützen, da mehrere Personen ständig Informationen bearbeiten. Irgendwelche Ideen? Wie schaffe ich Checkboxen nur bei Doppelklick?

column with checkbox1

Antwort

0

Bitte versuchen Sie es mit diesem System. Installieren Sie im Codeblatt des Arbeitsblatts, auf dem Sie die Kontrollkästchen haben.

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 

Sie benötigen ein Paar Ereignisprozeduren wie die letzten beiden für jedes Kontrollkästchen auf Ihrem Blatt. Ich habe es schnell versucht.

  1. Wählen Sie die beiden Verfahren aus.
  2. Drücken Sie Strg + C
  3. Drücken Sie Strg + V zweimal kopiert werden (die erste überschreibt die vorhandene Auswahl, die zweite erstellt eine Kopie)
  4. Wählen Sie das kopierte Paar
  5. Bearbeiten -> Ersetzen Sie „1“ mit "2" -> OK VBA wird "Ausgewählter Text" automatisch prüfen. Ändere das nicht. Stellen Sie sicher, dass "Nur ganzes Wort finden" nicht geprüft ist. Es wird 3 Ersatz geben, und das ist alles.
Verwandte Themen