Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1476to1480
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
dynamisch Checkbox = value.xlon bei Auswahl
01.03.2016 14:21:47
Alex
Servus zusammen!
Ich bins mal wieder ;)
Folgendes:
Über die Funktion
Sub Checkliste()
Dim cell As Range
Dim norow As Integer
norow = ActiveSheet.Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row
For Each cell In Range("C2:C" & norow)
With ActiveSheet.CheckBoxes.Add(cell.Left, _
cell.Top, cell.Width, cell.Height)
.LinkedCell = cell.Offset(, 1).Address(External:=True)
.Interior.ColorIndex = xlNone   'or  xlNone or xlAutomatic
.Caption = ""
.Value = xlOff ' Häckchen gesetzt oder nicht
'.Border.Weight = xlThin
End With
Next
With Range("C2:C" & norow)
.Rows.RowHeight = 15
End With
End Sub
werden in den Blatt "PM" in Spalte C für jede Zeile eine Checkboxen erstellt.
Spalte A enthält Gliederungspunkte für den Inhalt in Spalte B
z.b.
1.2 Werkzeug CHECKBOX
1.2.1 Bohrer CHECKBOX
1.2.1.1 Bohrkopf CHECKBOX
Jetzt will ich, dass wenn ich z.B. Punkt 1.2 in der Checkbox markiere, automatisch(dynamisch)alle Unterpunkte (1.2.1, 1.2.1.1, usw...) auch sofort markiert sind oder z.b. den Punkt 1. markiere alle Punkte unter 1. markiert sind...
Meine Überlegung war in die Richtung:
- schreibe in z.b. Spalte E3 "wahr", wenn Checkbox in C3 angeklickt
- Überprüfe, wenn E3 = wahr, ob A3 Untergliederungspunkte hat
- wenn A3 Untergliederungspunkte hat, Value=xlon bei den betreffenden Checkboxes
1. Problem:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Long
Dim k As Integer
i = Worksheets("PM").Range("A65536").End(xlUp).Row
For k = 1 To i
If Worksheets("PM").CheckBoxes(k).Value = 1 Then
Worksheets("PM").Cells(k + 1, 5).Value = "wahr"
End If
Next k
End Sub
Erkennt nicht, wenn ich eine Checkbox markiere, sondern nur, wenn ich auf eine Zelle klick, dann schreibt er erst "wahr" in Spalte E.
2. Problem:
Keine Ahnung, wie ich vom Ansatz her, das 1. Problem löse und den nötigen Code für die dynamische Befüllung (Value.xlon) der Checkboxes entwickle.
Wer eine Ahnung/Idee sowas schon mal gemacht?
Gruß+Danke!
Alex

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: dynamisch Checkbox = value.xlon bei Auswahl
01.03.2016 18:29:45
EtoPHG
Hallo Alex,
Formular-Steuerelemente wie Kontrollkästchen, lösen keine Worksheet-Ereignisse aus.
Darum muss man dieses simulieren:
Alle Kontrollkästchen selektieren und ihnen das untenstehende Makro (Code in ein Modul!) zuweisen:
Sub CheckboxClick()
Dim sPunkt As String
Dim lRowOffset As Long
Dim Target As Range
Set Target = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(, 1)
If Target.Column = 4 And Target.Count = 1 Then
Application.EnableEvents = False
sPunkt = Target.Offset(, -3).Text
lRowOffset = 1
Do While Left(Target.Offset(lRowOffset, -3), Len(sPunkt)) = sPunkt
Target.Offset(lRowOffset) = Target
lRowOffset = lRowOffset + 1
Loop
Application.EnableEvents = True
End If
End Sub
Gruess Hansueli

Anzeige
AW: dynamisch Checkbox = value.xlon bei Auswahl
02.03.2016 08:25:17
Alex
Servus Hansueli,
Danke dir schon mal, wieder was gelernt ;)
Ich verstehe leider nicht, was du genau unter "Alle Kontrollkästchen selektieren und ihnen das untenstehende Makro ".
Eine Schleife für alle Checkboxen erstellen und jedes mal call checkboxclick?
Gruß Alex

AW: dynamisch Checkbox = value.xlon bei Auswahl
02.03.2016 09:56:01
EtoPHG
Hallo Alex,
Im Kontextmenu eine selektierten Shapes (Checkbox) gibt es doch die Funktion Makro zuweisen.
Das hab ich gemeint!
Du kannst aber auch in deinen Erstellungscode folgende Zeile einbauen, dann wird das Makro den durch den Code erzeugten Checkboxen bereits zugewiesen:
...
.LinkedCell = cell.Offset(, 1).Address(External:=True)
.OnAction = "CheckboxClick"
...
Gruess Hansueli

Anzeige
AW: dynamisch Checkbox = value.xlon bei Auswahl
02.03.2016 15:28:21
Alex
Hey Hansueli,
achso, ja, gecheckt, was du meintest :)
Danke, funktioniert perfekt.
Was mich jetzt nur etwas wundert, mit der Funktion
Sub Checkliste()
Dim cell As Range
Dim norow As Integer
norow = ActiveSheet.Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row
For Each cell In Range("C2:C" & norow)
With ActiveSheet.CheckBoxes.Add(cell.Left, _
cell.Top, cell.Width, cell.Height)
.LinkedCell = cell.Offset(, 1).Address(External:=True)
.OnAction = "CheckboxClick" 'damit klick auf Checkbox change event auf dem Worksheet auslö _
st
.Interior.ColorIndex = xlNone   'or  xlNone or xlAutomatic
.Caption = ""
.Value = xlOff ' Häckchen gesetzt oder nicht
'.Border.Weight = xlThin
End With
Next
With Range("C2:C" & norow)
.Rows.RowHeight = 15
End With
End Sub
Setze ich ja die Checkboxen, eigentlich 1 pro Zelle.
Teilweise "verrutschen" die Kästchen aber nach unten, so dass ich 1-2 Zellen untereinander ohne Checkboxen habe, die betreffende Checkbox ist dann ein paar Zellen weiter unten zu finden, so dass 2 Checkboxen in einer Zelle sind oder irgendwo zwischen 2 Zellen eine Checkbox hängt, woran kann das liegen?
Gruß Alex

Anzeige
Verschiebung addierte Checkbox
03.03.2016 09:44:16
EtoPHG
Hallo Alex,
Mit dem mir vorliegenden Codes, kann ich das Problem nicht nachvollziehen.
Ich müsste eine Beispieldatei von dir haben, in der das Problem auftritt, um das zu analysieren.
Bitte Mappe hochladen!
Gruess Hansueli

AW: Verschiebung addierte Checkbox
03.03.2016 16:05:10
Alex
Hey Hansueli,
leider ist die Datei zu groß um hier hochzuladen.
Es besteht auf jeden Fall ein Zusammenhang zwischen
der länger des Inhalts in Spalte B und den Checkboxen...
Ändere ich z.b. den Inhalt in Spalte B auf nur a um und lasse dann die Checkboxen erstellen, funktioniert es, aber sobald der text in Spalte B t.b. "hallo, du musst das und das beachten und ebenso dies" z.b. ist, mag er das nicht....
Kann ich die Checkboxen, wie z.b. Steuerelemente per VBA ausrichten? mit .top, .left?
Leider dazu nichts gefunden....
Ich versuche mal übers Wochenende die Datei zu verkleinern.
Die lange Laufzeit bei der Erstellung der Checkboxen lässt sich wahrscheinlich nicht umgehen oder?
P.S. Woher kommt das "aufgeblähte" bei Exel-Marko-Dateien? Code ist ja nur text...
Gruß+Danke
Alex

Anzeige
AW: Verschiebung addierte Checkbox
04.03.2016 11:00:55
EtoPHG
Hallo Alex,
Das "Aufblähen", wie du es nennst, kommt nicht vom Makro-Code, sondern aus der Tatsache, dass du Steuerelemente in das Tabellenblatt addierst. Ich kann weder Hellsehen, noch Wahrsagen. Ich weiss z.B. nicht, wieviele Steuerelemente du addierst, ob du die vorhanden vorher löschst etc. etc.
Bei 'zuvielen' kann das die Mappe wirklich aublähen. Darum arbeite ich auch lieber direkt mit Zellinhalten, die solche einfachen Steuerelemente 'simulieren', denn eine Checkbox ist im Grunde genommen nichts anderes als ein WAHR/FALSCH Wert in einer Zelle. Du solltest das Ganze im Gesamtkontext betrachten und dich fragen, ob deine Anforderung nicht mit einfachen Formeln und ggf. kleinen VBA-Eingriffen abgedeckt werden kann.
Gruess Hansueli
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige