Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1316to1320
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
Inhaltsverzeichnis

Unbeantwortete Frage zur CheckBox-Erstellung

Unbeantwortete Frage zur CheckBox-Erstellung
25.06.2013 13:34:36
Jonas
Hallo liebe Community,
leider wurde meine Frage nicht beantwortet.
Ich bekomme es leider nicht alleine hin und bin mir sicher, dass es hier Leute gibt, für die das eine Leichtigkeit ist.
Daher nochmals die Bitte:
Kann mir jemand bei folgendem Problem helfen?
https://www.herber.de/forum/archiv/1316to1320/t1318890.htm#1318890
Hallo,
ich habe eine Excel-Datei mit vielen Zeilen (1000).
In Spalte B steht in vielen Zeilen ein Text.
Ist in Spalte B ein Text vorhanden, dann soll in entsprechender Zeile eine Checkbox in Spalte A  _
_
erscheinen. Wird die Checkbox aktiviert, soll in der Zelle der Checkbox, sowie der Zelle direkt  _
darunter und darüber ein "True" stehen.
Beispiel:
B10 enthält Text - Checkbox in A10 mit Verknpüfung auf A9, A10 und A11.
B276 enthält Text - Checkbox in A276 mit Verknüpfung auf A275,A276 und A277.
Sinn:
Das Ganze ist eine laaaange Liste und nicht immer werden alle Inhalte benötigt.
Inhalte die benötigt werden sollen durch eine aktivierte Checkbox gekennzeichnet werden.  _
Anschließend löscht ein Makro (bereits vorhanden) alle Zeilen die in Spalte A mit False (also  _
kein Haken gesetzt) markiert sind. Eine "Inhaltszeile" besteht immer aus 3 Zeilen. Die mittlere enthält den Text, darüber und darunter ist eine leere Zeile. Daher die Verknüpfung der Checkbox mit 3 Zeilen.
Frage:
Lässt sich die Erstellung und Verknüpfung per Makro machen oder muss ich ca. 300 Checkboxen hä  _
_
ndisch einfügen?
Kann eine Checkbox mit mehreren Zellen verknüpft werden, oder muss ich ich folgenden den  _
Workaround nutzen: Checkbox in A10 und Verknüpfung auf A10 - A9 und A11 mit Inhalt =A10.
Sollte nur der Workaround funktionieren, lässt sich das auch per Makro automatisieren?
Vielen Dank und liebe Grüße
Jonas

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Unbeantwortete Frage zur CheckBox-Erstellung
25.06.2013 13:55:44
Klaus
Hallo Jonas,
sowas ist IMMER doof ohne Mustertabelle. Aus dem Handgelenk geschüttelt versuch mal das Makro "ForAllB".
Wenn in B mal zwei Zeilen direkt untereinander Text haben gibts Zirkelbezüge. Das habe ich nicht überprüft und auch sonst keine Fehlerbehandlung eingebaut.
Option Explicit
Sub ForAllB()
Dim LastRow  As Long
Dim r As Range
With ActiveSheet
LastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
For Each r In .Range(.Cells(2, 2), .Cells(LastRow, 2))
If r.Value = "" Then
'wenn leer, dann nix
Else
'erstelle CheckBox
Call MakeCheckBoxHere(r)
'eine Zeile drüber und drunter das gleiche wie LinkedCell
r.Offset(-1, -1).FormulaR1C1 = "=R[1]C"
r.Offset(1, -1).FormulaR1C1 = "=R[-1]C"
End If
Next r
End With
End Sub
Sub MakeCheckBoxHere(myR As Range)
Dim NewCheck As Object
Set NewCheck = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=Range("A1"),  _
DisplayAsIcon:=False)
With ActiveSheet.Shapes(NewCheck.Name)
.OLEFormat.Object.Object.Caption = ""
NewCheck.LinkedCell = myR.Offset(0, -1).Address
End With
Call MoveItem(NewCheck.Name, ActiveSheet.Name, myR.Offset(0, -1).Address)
End Sub
Sub MoveItem(sButton As String, sWks As String, sCell As String)
Dim rng As Range
Set rng = Sheets(sWks).Range(sCell)
With Sheets(sWks).OLEObjects(sButton)
.Top = rng.Top
.Left = rng.Left
.Width = 15   'anpassen
.Height = 15  'anpassen
End With
End Sub
Grüße,
Klaus M.vdT.

Anzeige
AW: Unbeantwortete Frage zur CheckBox-Erstellung
26.06.2013 09:30:47
Jonas
Guten Morgen Klaus,
das Makro funktioniert bis auf kleine Änderungen super.
Die Liste beginnt erst bei B10, vorher kommt es zu Zirkelbezügen. Ich habe das Makro entsprechend umschreiben können.
Weiterhin wollte ich die CheckBoxen gerne mit einem Abstand von 5,25 vom Linken Zellenrand. Auch das konnte ich umschreiben.
Zwei Änderungen bekomme ich einfach nicht hin und lassen sich auch leider nicht aufzeichnen:
1. Die BackColor soll auf &H00C0C0C0& gestellt werden.
2. PrintOut soll False sein
Wie kann ich das Makro entsprechend umstellen? Ich habe versucht, die Eigenschaften der CheckBoxen an verschiedenen Stellen des Makros zu ändern. Leider hat nichts davon funktioniert.
Wäre toll, wenn das noch jemand entsprechend anpassen könnte. Ich schaffs leider nicht.
Vielen Dank und liebe Grüße
Jonas

Anzeige
AW: Unbeantwortete Frage zur CheckBox-Erstellung
26.06.2013 09:48:38
Klaus
Hi,
du hättest ruhig dein geänderten Code posten können. Dann hättest du die aktualisierungen direkt in deinem Code bekommen, und ich hätte sie auch getestet.
So, einfach mal ungetestet hingeworfen und hoffe dass es funktioniert:
1. Die BackColor soll auf &H00C0C0C0& gestellt werden.
direkt unter
NewCheck.LinkedCell = myR.Offset(0, -1).Address
noch die ZEile
NewCheck.BackColor = &H00C0C0C0
2. PrintOut soll False sein
und die Zeile
NewCheck.PrintObject = False
dann sollte das klappen.
Grüße,
Klaus M.vdT.

Anzeige
AW: Unbeantwortete Frage zur CheckBox-Erstellung
26.06.2013 09:53:40
Jonas
So...
Hab nochmal fleißig dran rumgespielt.
Derzeit scheint alles zu funktionieren. Die Sub-Routine MakeCheckBoxHere() sieht jetzt so aus:
Sub MakeCheckBoxHere(myR As Range)
Dim NewCheck As Object
Set NewCheck = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=Range("A1"), _
DisplayAsIcon:=False)
With ActiveSheet.Shapes(NewCheck.Name)
.OLEFormat.Object.Object.Caption = ""
.OLEFormat.Object.Object.BackColor = &HC0C0C0
.OLEFormat.Object.PrintObject = False
NewCheck.LinkedCell = myR.Offset(0, -1).Address
End With
Call MoveItem(NewCheck.Name, ActiveSheet.Name, myR.Offset(0, -1).Address)
End Sub
Hat ne ganze Weile gedauert, bis ich rausgefunden habe, dass bei BackColor und Caption zweimal "Object" davor stehen muss und bei PrintObject nur einmal.
Welchen Sinn das hat kann mir wahrscheinlich keiner erklären :-)
Thx und bis dann,
Jonas

Anzeige
Na, dann danke für die Rückmeldung!
26.06.2013 09:58:16
Klaus
Hi,
deine Lösung oder meine Alternative - sechs oder ein halbes dutzend, beides funktioniert!
Hinter die Geheimnisse von Ole und Object.Object bin ich auch noch nicht durchgestiegen.
Grüße,
Klaus M.vdT.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige