Thema Datum  Von Nutzer Rating
Antwort
30.10.2020 13:39:47 Detlef
NotSolved
30.10.2020 13:49:16 Gast79008
NotSolved
02.11.2020 06:47:46 Detlef
NotSolved
02.11.2020 08:33:58 Gast79008
NotSolved
30.10.2020 18:07:16 xlKing
NotSolved
30.10.2020 18:34:38 xlKing
NotSolved
02.11.2020 06:43:44 Gast60214
NotSolved
02.11.2020 06:46:03 Gast90183
NotSolved
Rot Ei ei ei - Das geht sicher auch einfacher
03.11.2020 01:02:48 xlKing
NotSolved
03.11.2020 02:13:06 xlKing
NotSolved
30.10.2020 18:28:18 Gast35120
NotSolved
30.10.2020 19:34:49 volti
NotSolved
02.11.2020 06:48:36 Detlef
NotSolved
02.11.2020 11:08:45 volti
NotSolved
02.11.2020 11:15:05 Detlef
NotSolved
02.11.2020 11:16:42 Detlef
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
03.11.2020 01:02:48
Views:
515
Rating: Antwort:
  Ja
Thema:
Ei ei ei - Das geht sicher auch einfacher

Hello Detlef,

Es tut mir leid, aber du hast eine neuere Version von Checkboxen verwendet die mein altes Excel noch nicht unterstützt. Ich sehe zwar das visuelle Bild. Kriege es aber nicht interaktiv. Daher habe ich diese für meine Tests durch ältere ActiveX-Checkboxen ersetzt. Solltest du Probleme damit kriegen, übernimm einfach nur den Code.

Was mir auffiel: Wenn du eine neue ActiveX-Checkbox hinzufügst steht in den Eigenschaften als Platzierung "Nur von Zellposition abhängig" Dadurch verschieben sich die Checkboxen beim Ausblenden von Zeilen. Wähle also "Von Zellposition und -größe" abhängig. Dann werden die Checkboxen mit den Zeilen ausgeblendet. Damit du das nicht für 1500 Checkboxen manuell umstellen musst, kannst du auch einmalig folgendes simples Makro ausführen. Danach kannst du den Code wieder löschen.

Sub Platzierung()
 For Each shp In Sheets(1).Shapes
  If InStr(1, shp.Name, "CheckBox") > 0 Then
    shp.Placement = xlMoveAndSize
  End If
 Next shp
End Sub

Nachdem du die Platzierung angepasst hast, füge ein neues Klassenmodul "Klasse1" ein und gib ihm diesen Code mit:

Public WithEvents cbx As MSForms.CheckBox

Private Sub cbx_Click()
  Dim CheckBox2 As Object
  Set CheckBox2 = Sheets("IBN-Checkliste").Shapes("CheckBox2").OLEFormat.Object.Object
  
  If cbx.Value = True Then
    cbx.Caption = "R"
  Else
    cbx.Caption = Chr$(163)
  End If
  
  If CheckBox2.Value = True And Not Intersect(cbx.TopLeftCell, Range("R:U")) Is Nothing Then
    If cbx.Name = "CheckBox2" Then
      Rows("18:19").Hidden = cbx.Value
    Else
      cbx.TopLeftCell.EntireRow.Hidden = cbx.Value
    End If
  End If
  
End Sub

Anschließend kommt der folgende Code in das Modul "DieseArbeitsmappe"

Dim chkbx(1500) As New Klasse1 'Wert 1500 ggf erhöhen, z.B. bei Fehler "Index außerhalb Bereich"
Private Sub Workbook_Open()
  Dim shp As Shape
  
  For Each shp In Sheets("IBN-Checkliste").Shapes
    If shp.Type = msoOLEControlObject Then
      If TypeName(shp.OLEFormat.Object.Object) = "CheckBox" Then
        i = i + 1
        Set chkbx(i).cbx = shp.OLEFormat.Object.Object
      End If
    End If
  Next shp
End Sub

Deinen Code aus "Tabelle1" solltest du spätestens jetzt komplett löschen.

Schließe nun die Datei (Speichern nicht vergessen) und öffne sie erneut.

ActiveX-Checkboxen sind sehr speicherintensiv. Die langen Ladezeiten beim Öffnen kriegst du bei der Menge so leider nicht weg, aber der Code ist optimiert und gilt für alle Checkboxen gleichermaßen. Beispiel: https://workupload.com/file/rGLywqeV3vw

Wenn du auch auf die langen Ladezeiten beim Öffnen verzichten willst, verwende Formular-Kontrollkästchen anstatt Aktiv-X Checkboxen. Diese lassen sich nur leider nicht korrekt platzieren und müssen ausgeblendet werden. Wie du damit arbeitest zeige ich dir in diesem Beispiel: https://workupload.com/file/6vFQEaK27HA Das geht doch gleich viel flüssiger von der Hand, stimmts? Das Passwort für das VBA-Projekt ist unverändert.

PS: Am besten du speicherst die Datei als Mustervorlage (*.xltx). Damit vermeidest du, dass jemand seine Häkchen direkt in deiner Datei speichert. Durch die Mustervorlage wird er gezwungen, seine bearbeitete Datei unter neuem Namen abzuspeichern.

Gruß Mr. K.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
30.10.2020 13:39:47 Detlef
NotSolved
30.10.2020 13:49:16 Gast79008
NotSolved
02.11.2020 06:47:46 Detlef
NotSolved
02.11.2020 08:33:58 Gast79008
NotSolved
30.10.2020 18:07:16 xlKing
NotSolved
30.10.2020 18:34:38 xlKing
NotSolved
02.11.2020 06:43:44 Gast60214
NotSolved
02.11.2020 06:46:03 Gast90183
NotSolved
Rot Ei ei ei - Das geht sicher auch einfacher
03.11.2020 01:02:48 xlKing
NotSolved
03.11.2020 02:13:06 xlKing
NotSolved
30.10.2020 18:28:18 Gast35120
NotSolved
30.10.2020 19:34:49 volti
NotSolved
02.11.2020 06:48:36 Detlef
NotSolved
02.11.2020 11:08:45 volti
NotSolved
02.11.2020 11:15:05 Detlef
NotSolved
02.11.2020 11:16:42 Detlef
NotSolved