Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1268to1272
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA Excel Checkbox Klasse definieren
Kie
Hallo Forum,
ich möchte gerne 5000 Checkboxen in eine Excelzelle schreiben (Teil 1) und jede soll dann bei Aktivierung das gleiche Makro ausführen (Teil 2).
Teil 1 habe ich hinbekommen. Das Beispiel für 25 Checkboxen hänge ich unten an.
Bei Teil 2 bin ich ratlos. Da ich nicht jede Checkbox1_Click() bis Checkbox5000_Click() als Code schreiben möchte, benötige ich eine Definition als Klasse. (glaube ich zumindest). Damit bin ich aber maßlos überfordert.
Ich möchte gerne, dass beim Anklicken der Checkbox folgendes passiert:
- bei Aktivierung: nix
- bei Deaktivierung: schreiben von "text" in die danebenliegende Zelle
Kann mir jemand bei der Definition der Klasse helfen?
Danke!
hier noch der Code für die 25 Checkboxen, wie es bisher definiert war:
Sub CheckboxenSetzen()
Dim zeile As Integer
Dim pfad1 As Worksheet
Set pfad1 = ThisWorkbook.Worksheets("Tool")
For zeile = 2 To 26
' CheckBox in Spalte "S" einfügen
With Range("S" & zeile + 1)
' Add Method (OLEObjects Collection):
' Adds a new OLE object to a sheet. Returns an OLEObject object
Set objCheckbox = pfad1.OLEObjects.Add _
(ClassType:="Forms.CheckBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=798, Top:=.Top + 2.5, Width:=34.5, _
Height:=10)
End With
objCheckbox.LinkedCell = "$R$" & zeile + 1                                      'verlinken
pfad1.OLEObjects("Checkbox" & zeile).Object.Caption = ""                        'Name nicht  _
anzeigen
pfad1.OLEObjects("Checkbox" & zeile).Object.BackStyle = fmBackStyleTransparent  ' _
Transparent machen
objCheckbox.Object.Value = False                                                ' _
Deaktivieren
Next zeile
End Sub

AW: VBA Excel Checkbox Klasse definieren
10.07.2012 10:54:59
fcs
Hallo Kie,
ich empfehle dir dringends dich von dem Plan zu verabschieden eine Spalte mit Checkboxen zuzupflasten.
Die vielen Checkboxen fressen endlos Resourcen, werden dir wahrscheinlich beim Sortieren der Daten Schwierigkeiten bereiten, und sind in der Datenpflege nicht einfach.
Trage in der Spalte S einfach ein "x" oder nichts ein und dann per Ereignismakros abhängig davon in Spalte R WAHR oder FALSCH und in Spalte T deinen Text. Dabei kann man sich den Eintrag in Spalte R auch sparen und ggf. den Wert in Spalte S prüfen.
Das kann man dann entweder per Doppelklick oder Rechte-Taste-Klick mit der Maus machen oder einfach über die Tastatur.
Nachfolgend entsprechende Ereignismakros, die im VBA-Editor unter dem Tabellenblatt einzufügen sind.
Gruß
Franz
'Code im Tabellenmodul
Option Explicit
Private Const strText As String = "Mein Text"
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Maus-Linke-Taste-Doppelklicks in Spalte S überwachen
If Target.Column = 19 And Target.Row >= 2 And Target.Cells.Count = 1 Then
Cancel = True
Application.EnableEvents = False
If Target.Value = "" Then
Target.Value = "x"
Target.Offset(0, -1).Value = True
Target.Offset(0, 1).ClearContents
ElseIf LCase(Target.Value) = "x" Then
Target.ClearContents
Target.Offset(0, -1).Value = False
Target.Offset(0, 1).Value = "Mein Text"
End If
Application.EnableEvents = True
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
'Überwachung der Eingaben in Spalte S
Dim Zelle As Range
If Target.Column = 19 And Target.Row >= 2 And Target.Columns.Count = 1 Then
Application.EnableEvents = False
For Each Zelle In Target
With Zelle
If .Value = "" Then
.Offset(0, -1).Value = False
.Offset(0, 1).Value = strText
ElseIf LCase(.Value) = "x" Then
.Offset(0, -1).Value = True
.Offset(0, 1).ClearContents
Else
MsgBox "Unzulässige Eingabe - nur ""x"" oder leer sind zulässig"
If .Offset(0, 1) = strText Then
.ClearContents
Else
.Value = "x"
End If
.Select
End If
End With
Next Zelle
Application.EnableEvents = True
End If
End Sub

Anzeige
AW: VBA Excel Checkbox Klasse definieren
10.07.2012 14:24:34
Kie
Hallo Franz, hallo Günther,
danke für eure Antworten!
ich empfehle dir dringends dich von dem Plan zu verabschieden eine Spalte mit Checkboxen  _
zuzupflasten.
Die vielen Checkboxen fressen endlos Resourcen, werden dir wahrscheinlich beim Sortieren der  _
Daten Schwierigkeiten bereiten, und sind in der Datenpflege nicht einfach.
Trage in der Spalte S einfach ein "x"...

Das ist ein guter Tipp. Ich benötige nicht wirklich eine Checkbox, sondern nur ein Objek das in der Art aussieht wie eine Checkbox, denn mein Auftraggeber möchte dies unbedingt haben. Gibt es da eine Möglichkeit, dass eventuell mit einem Bild/einer Grafik zu umgehen, die man anklicken kann. Oder irgendwie mit den Symbolen der bedingten Formatierung?
Meinen vorheriger Vorschlag mit einer ja/nein Auswahl wurde von meinem Kunden nicht gut aufgenommen, er hätte gerne ein Häkchen oder Kreuzchen"click".
Hat da jemand eine Idee wie man sowas machen könnte. Oder ein Schlagwort für mich, nach dem ich weiter suchen kann?
Anzeige
AW: Check-Markierung in Spalte eintragen
10.07.2012 16:16:07
fcs
Hallo Kie,
statt "x" kann man mit Schriftart Webdings auch grafische Symbole in den Zellen darstellen.
In der Beispieldatei hab ich das mal umgesetzt, so das verschieden Eingaben möglich sind. Mausklicks und Tastatureingaben.
Gruß
Franz
https://www.herber.de/bbs/user/80917.xlsm
Checkmarkierung mit bedingter Formatierung
10.07.2012 16:42:48
fcs
Hallo Kie,
hier auch noch eine Variante mit bedingter Formatierung (Symbolsätze) diese funktioniert dann aber nur ab Excelversion 2007!!
In Spalte S werden die Werte 0 oder 1 eingetragen, Umschaltung per Mausklicks oder Tastatureingabe.
https://www.herber.de/bbs/user/80918.xlsm
Gruß
Franz
Anzeige
AW: Checkmarkierung mit bedingter Formatierung
11.07.2012 10:51:05
Kie
Hallo Franz,
wow, beide Lösungen sehen Bombe aus! Gefallen mir sehr gut, vielen Dank für die Hilfe!
Grüße Kie
AW: Checkmarkierung mit bedingter Formatierung
11.07.2012 11:16:35
Kie
Hallo Franz,
noch eine Frage: Gibt es eine Möglichkeit die beiden Varianten zu verbinden. Mir gefällt die bedingte Formatierung besser, da man hier ebenfalls 0 oder 1 eingeben kann. Aber in meiner Euphorie dachte ich, man könnte einfach beide Symbole auf grau umstellen oder individuelle eigene Symbole hinterlegen. dann wäre das prima gewesen. Dies geht nun nach Forumseinträgen leider nicht. Rot und Grün an dieser Stelle kann ich nicht verwenden, da sie die Aufmerksamkeit zu stark erregen. Und die einzige farblose Variante ist der Kreis (ausgefüllt oder unausgefüllt), wo ich mir nicht sicher bin, ob das intuitiv genug ist.
Kann man die Variante von Wingdings so anpassen, dass man ebenfalls 0 oder 1 angeben kann?
Oder kennst du doch einen Trick wie man eigene Symbole in "bedingter Formatierung" anpassen/einfügen kann?
Danke nochmals!
Anzeige
AW: Checkmarkierung mit bedingter Formatierung
11.07.2012 11:23:20
Kie
Hallo Franz,
gerade habe ich gesehen, dass du das ja bereits mit dem x und X gemacht hast. Das werde ich auf 0 und 1 abändern können und somit deinen Code anpassen kann. Danke!

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige