Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1380to1384
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

Checkbox kopieren m. Makro u. Zellverknüpfung +1

Checkbox kopieren m. Makro u. Zellverknüpfung +1
24.09.2014 12:33:19
Thomas
Hallo Freunde
Ich habe eine Tabelle erstellt in der am Anfang jeder Zeile in "A" eine Checkbox mit Verknüpfung auf drunter liegende Zelle ist, die je nach aktiv oder inaktiv die beiden darunterliegenden Zeilen ein oder ausblendet.
Nun habe ich ein Makro welches die selektierte Zeile um eins nach unten kopiert.
Dabei soll auch die Checkbox mit kopiert werden, mit samt Makro zum ein und ausblenden und der Zellverknüpfung. Nur soll das alles um den Offset +1 verschoben sein.
Als Beispiel
In A1 ist die Checkbox mit Verknüpfung auf A1. Wenn man diese aktiv setzt werden Zeile 2 u. 3 eingeblendet.
Nun soll durch einen Button die Zeile 1,2 u.3 kopiert werden, inklusive der Checkbox und der damit verbundenen Zellverknüpfung und Makros. Dies soll sich jetzt aber so verhalten, dass die Checkbox die Verknüpfung auf "A4" hat und die Zeilen 5 u.6 ein und ausblenden soll.
Ich hoffe ihr könnt mir folgen
Gruß Thomas

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Checkbox kopieren m. Makro u. Zellverknüpfung +1
24.09.2014 14:56:41
fcs
Hallo Thomas,
benutze die Checkboxen aus den Formularsteuerelementen, dann hast du hier weniger Probleme.
Als Code in einem allgemeinen Modul benötigst du dann nur:
'Code in einem allgemeinen Modul
Sub Ein_Ausblenden()
'Dieses Makro der(den) Checkbox(en) in Spalte A zuweisen
Dim objShape As Shape
Set objShape = ActiveSheet.Shapes(Application.Caller)
With objShape.TopLeftCell
If .Column = 1 Then
Range(Rows(.Row + 1), Rows(.Row + 2)).EntireRow.Hidden = _
objShape.ControlFormat.Value = -4146
.Value = Not objShape.ControlFormat.Value = -4146
End If
End With
End Sub
Sub Kopie_3_Zeilen()
'Kopiert die Zeilen 2 bis 4 und fügt sie vor Zeile 5 ein - inkl. Checkbox in Zeile 2
If Application.CopyObjectsWithCells = False Then Application.CopyObjectsWithCells = True
Range(Rows(2), Rows(4)).Copy
Range(Rows(5), Rows(7)).Insert
End Sub
Gruß
Franz

Anzeige
AW: Checkbox kopieren m. Makro u. Zellverknüpfung +1
25.09.2014 08:43:37
Thomas
Hallo Franz
Ich danke dir. Es hat alles geklappt wie es sollte. Habe es noch ein wenig umgeschrieben, damit er nicht immer in die selben Zeilen kopiert und an selber Stelle einfügt und schon hatte ich was ich wollte.
Jetzt ist ein Folgeproblem aufgetreten.
Die Zeile der Checkbox und die beiden drunter liegenden Zeilen werden ja nun kopiert und direkt unter die kopierten Zeilen gehängt.
Das Problem ist jetzt, dass in Abhängigkeit des Zustandes der Checkbox, entweder die eingeblendeten Zeilen im aktivierten Zustand oder im deaktivierten Zustand die darunter liegenden Zeilen, die manchmal auch schon ausgefüllt sein können, kopiert werden.
Mein Gedanke war jetzt, die Checkbox in der selektierten Zeile aktiv zu schalten und somit dafür zu sorgen, dass er in jedem Fall die 3 richtigen Zeilen kopiert.
Jetzt die Frage
Wie kann ich das Aktivieren der Checkbox noch mit in den Kopiervorgang einbauen?
Ich muss ja sagen, dass er sich die Checkbox die in der markierten Zeile ist raussuchen soll und diese
aktiv setzen muss bevor er anfängt zu kopieren. Allerdings kann ich die Checkbox auch nicht mit einem Namen ansprechen, da es ja je nach markierter Zeile eine andere Checkbox ist.
Gruß Thomas

Anzeige
AW: Checkbox kopieren m. Makro u. Zellverknüpfung +1
25.09.2014 15:26:40
fcs
Hallo Thomas,
wenn du einen beliebigen Zeilenblock kopieren und unterhalb einfügen willst, dann wird es etwas komplizierter. Es ist aber nicht unbedingt erforderlich, die Zeilen zu einer Checkbox ggf. erst einzublenden. Man kann es auch so steuern, dass erst in den kopierten Zeilen die Zeilen ggf. eingeblendet werden.
Gruß
Franz
Sub Kopie_3_Zeilen()
Dim Zeile As Long, objShape As Shape
Dim wks As Worksheet
Set wks = ActiveSheet
Zeile = ActiveCell.Row
'Checkbox in Spalte A in der Zeile mit der aktiven Zelle suchen
Set objShape = fncFindCheckbox(objWks:=wks, Zeile:=Zeile, Spalte:=1)
If objShape Is Nothing Then
MsgBox "Keine Checkbox in aktiver Zeile. " _
& "Bitte Zelle in Zeile mit Checkbox selektieren"
Else
With wks
If Application.CopyObjectsWithCells = False Then _
Application.CopyObjectsWithCells = True
'Zeilen kopieren und unterhalb des Blocks einfügen
.Range(.Rows(Zeile), .Rows(Zeile + 2)).Copy
.Range(.Rows(Zeile + 3), .Rows(Zeile + 5)).Insert
Zeile = Zeile + 3
'Prüfen, ob Checkbox deaktiviert ist
If objShape.ControlFormat.Value = -4146 Then
'kopierte Checkbox suchen
Set objShape = fncFindCheckbox(objWks:=wks, Zeile:=Zeile, Spalte:=1)
'Neue Checkbox auf True setzen und Zeilen einblenden
objShape.ControlFormat.Value = 1
.Cells(Zeile, 1) = True
.Range(.Rows(Zeile + 1), .Rows(Zeile + 2)).EntireRow.Hidden = False
End If
'Zelle in kopiertem Block selektieren
Cells(Zeile, 2).Select
'Altdaten in koierten Zeilen löschen --- ggf. weglassen
.Range(.Cells(Zeile, 2), .Cells(Zeile + 2, 10)).ClearContents
End With
End If
End Sub
Public Function fncFindCheckbox(objWks As Worksheet, Zeile As Long, _
Optional Spalte As Long = 1) As Shape
'Checkbox finden mit TopLeftCell in der Zeile und Spalte
Dim objShape As Shape
For Each objShape In objWks.Shapes
With objShape
'Prüfen der Steuerelementeigenschaften
If .TopLeftCell.Column = Spalte Then
If .TopLeftCell.Row = Zeile Then
If .Type = msoFormControl Then
If .FormControlType = xlCheckBox Then
Set fncFindCheckbox = objShape
Exit For
End If
End If
End If
End If
End With
Next
End Function

Anzeige
AW: Checkbox kopieren m. Makro u. Zellverknüpfung +1
26.09.2014 11:38:14
Thomas
Hallo Franz
Als Erstes mal 1000 Dank für deine Hilfe.
Alles funktioniert wunderbar.
Ich danke dir auch für das Einbauen der "Inhalte der neuen Zeilen löschen" Funktion
Hab hier und da noch ein wenig Anpassungen vorgenommen, da ich nicht alle neu kopierten Zeileninhalte löschen wollte. Es sollte nur Zeile 1 und Zeile 3 gelöscht werden. Zeile 2 sollte bleiben. Und hab dafür auch nur 6 Stunden gebraucht ;-), aber ich habs hinbekommen.
Mit bestem Dank und Gruß
Thomas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige