7.3k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Supportnet Gemeinde,

das Makro von Oliver ist fast genau das was ich suche.

Ich habe eine Tabelle mit ca. 2000 Datensätzen, diese sollen durch anhaken eines Kontrollkästchen in eine andere Datei kopiert werden.
Je nach Kriterium in 3 verschiedene Excel-Dateien.

Nur benötige ich die Kontrollkästchen nicht in der ersten Spalte
sondern hinter der letzten Spalte und dort in 3 Spalten (3 Kriterien).

Wie müsste man das Makro abändern, wenn ich die Kontrollkästchen zum Beispiel in Spalte AQ / AR / AS bräuchte?
Könnte man das kopieren der ausgewählten Zeilen auch per Makro machen?

Ich bin unter VBA leider noch ein Anfänger, es wäre schön wenn Ihr mir weiterhelfen könntet.

Viele Grüße
pshome

18 Antworten

0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hall pshome,
welches Makro ?
Makro von Oliver


Oder gibt es einen Musterdatei?

Gruß
fedjo
0 Punkte
Beantwortet von
Hallo fedjo,

Sorry, hatte vergessen das Makro mit einzubinden.

Sub Kontrollkästchen_einfügen()
Dim Wiederholungen As Integer, Position As Double
Application.ScreenUpdating = False
Position = 0
For Wiederholungen = 1 To 300
With ActiveSheet.CheckBoxes.Add(18, Position, 24, 18)
.LinkedCell = "$A$" & Wiederholungen
.Characters.Text = ""
End With
Position = Position + 18
Next
End Sub

Ich hoffe Ihr könnt mir helfen.

Gruß

pshome
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo pshome,

für das Einfügen der Kontrollkästchen in die Spalten AQ, AR und AS kannst du das folgende Makro benutzen:

Sub Kontrollkästchen_einfügen2()
Dim L1, Wiederholungen, Spalte As Integer
Dim cols As Variant

'Spalten definieren, in die die Kontrollkästchen eingefügt werden
cols = Array("AQ", "AR", "AS")

Application.ScreenUpdating = False

For Wiederholungen = 1 To 300 'Zeilen

For Spalte = 0 To 2 'Zähler für das Array cols

L1 = (Cells(Wiederholungen, cols(Spalte)).Width - 24) / 2 'notwendig zum Zentrieren
With ActiveSheet.CheckBoxes.Add(Cells(Wiederholungen, cols(Spalte)).Left + L1, Cells(Wiederholungen, cols(Spalte)).Top, 24, 10)
.LinkedCell = cols(Spalte) & Wiederholungen
.Characters.Text = ""
End With

Next Spalte

Next Wiederholungen

Application.ScreenUpdating = True

End Sub


Und ja, man kann das Kopieren der ausgewählten Datensätze auch per Makro lösen ;-). Aber dazu bräuchte man etwas mehr Angaben.

Gruß

M.O.
0 Punkte
Beantwortet von pshome Einsteiger_in (29 Punkte)
Hallo M.O.,

vielen Dank, hat super funktioniert.

Eine Kleinigkeit vielleicht noch, kann man die Zeile bestimmen ab wann eingefügt werden soll?
Hintergrund die Spaltenüberschriften sind 7-zeilig.

Wenn das Kopieren der Datensätze per Makro funktioniert, wär das super und eine große Erleichterung.

Die Datei aus der kopiert werden soll, heißt Zentrale.xlsm.

Es müsste zuerst unterschieden werden, welche Spalte wurde ausgewählt und danach welche Zeile angehakt ist, um die dann anschließend die Zeile von A bis AN in eine von 3 verschiedenen Dateien zu kopieren.

Wohin kopiert werden soll entscheidet die Spalte.

Wenn in Spalte AO Zeilen angehakt werden, sollen die Zeilen in die Datei Offen.xlsm kopiert werden,
wenn in Spalte AR Zeilen angehakt werden, sollen die die Zeilen in die Datei Begonnen.xlsm kopiert werden und wenn in Spalte AS Zeilen angehakt werden, sollen die die Zeilen in die Datei Zuschlag.xlsm kopiert werden.

Diese 3 Dateien haben den gleichen Aufbau wie die Zentrale, d.h. auch diese haben 7-zeilige Spaltenüberschriften, ab Zeile A8 darf eingefügt werden.

Wenn ein Häkchen in der Zentral-Datei für eine Zeile gelöscht wird, sollte diese Zeile auch in der jeweiligen Datei wieder gelöscht werde.

Sollten weitere Informationen gebraucht, bitte kurze Info.

Viele Grüße

pshome
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo pshome,

die Zeilen, in die die Kontrollkästchen eingefügt werden, werden mit
For Wiederholungen = 1 To 300 'Zeilen

festgelegt, hier also die Zeilen 1 bis 300.
Willst du z.B. die Kontrollkästchen von Zeile 8 bis 300 haben, so ändere den Code wie folgt ab:
For Wiederholungen = 8 To 300 'Zeilen

Das Kopieren ist kein Problem. Die Zeile allerdings zu löschen, könnte ggf. ein Problem werden. Gibt es denn eindeutige Daten, mit denen man einen Datensatz in einer Zeile identifizieren kann? Liegen die Dateien, in die die Datensätze kopiert werden sollen und ggf. auch wieder gelöscht werden sollen, im selben Verzeichnis, wie die Datei mit den Kontrollkästchen?
Und wie hast du dir das Kopieren und Löschen vorgestellt? Soll das sofort gehen, wenn ein Haken gesetzt oder gelöscht wird?
Auch wäre eine Beispieldatei deiner Daten nicht schlecht. Sie sollte im Aufbau deiner Originaldatei gleichen und ein paar Dummydaten enthalten. Die kannst du z.B. hier hochladen und den Link dann posten.

Gruß

M.O.
0 Punkte
Beantwortet von pshome Einsteiger_in (29 Punkte)
Hallo M.O,

vielen Dank für den Hinweis.

Die Verzeichnisstruktur ist folgendermaßen aufgebaut:

1.VZ-Daten -> 2.VZ-Zentrale ->1.D- Zentrale.xlsm
->3.VZ-Erfassung ->1.D-Offen / 2.D-Begonnen / 3.D-Zuschlag.xlsm

VZ = Verzeichnis / D =Datei

Wird der Haken wieder entfernt, sollte die Zeile in der jeweiligen Datei wieder gelöscht werden.
Das könnte eventuell sofort oder beim Schließen der Zentral-Datei erfolgen.

Ich habe Dir für alle Dateien (4) einen Dummy erstellt.

Links: http://www.file-upload.net/download-9228352/Begonnen.xlsm.html
http://www.file-upload.net/download-9228351/Offen.xlsm.html
http://www.file-upload.net/download-9228353/Zentrale.xlsm.html
http://www.file-upload.net/download-9228354/Zuschlag.xlsm.html

Im Voraus vielen Dank für Deine Bemühungen.

Viele Grüße

pshome
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo pshome,

ist in deiner Orginaldatei in den Arbeitsmappen immer nur eine Tabelle drin, oder gibt es dort mehrere Tabelle (für jedes Jahr)?

Gruß

M.O.
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo pshome,

ich habe dir die Datei Zentrale.xlsm mit den Makros hier hochgeladen.

Ich hoffe, du hängst nicht zu sehr an den Kontrollkästchen, ich habe das jetzt ohne Kontrollkästchen gelöst (über Datenüberprüfung).

Wenn du die Makros in deine Testdatei kopierst, dann achte bitte darauf, wo die jeweiligen Makros stehen (im VBA-Projekt des Tabellenblatts oder in einem Standard-Modul.

Ich bin mal davon ausgegangen, dass es in der Tabelle immer nur ein Arbeitsblatt gibt.

Gruß

M.O.
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo,

was ich noch vergessen hatte: den Pfad im Makro datei_oeffnen musst du natürlich noch auf deine Gegebenheiten anpassen.

Gruß

M.O.
0 Punkte
Beantwortet von pshome Einsteiger_in (29 Punkte)
Hallo M.O.,

von diesen Link, werde ich nichts mehr downloaden!!!

Mein Virenscanner springt im Dreieck und neue Toolbar’s wollte ich eigentlich auch nicht.
Habe bis jetzt gebraucht meinen PC wieder sauber zubekommen.

Es sollte doch auch noch andere Möglichkeiten geben, dass Du mir die Datei zukommen lassen kannst.

Zu Deiner Frage:

Standardmäßig ist immer nur eine Tabelle enthalten aber ich möchte für die Zukunft nicht ausschließen dass eventuell weitere folgen.

Die Originaldatei enthält immer nur ein Jahr. Einfach dem Datenvolumen geschuldet.
Jedes Jahr wird auch die Verzeichnisstruktur neuangelegt.

Bspw.: …\2014\Zentrale\Zentrale.xlsm
…\2014\Erfassung\Begonnen.xlsm – Offen.xlsm – Zuschlag.xlsm usw.

Gruß

pshome
...