4.9k Aufrufe
Gefragt in Tabellenkalkulation von florian1010 Mitglied (754 Punkte)
Hallo Zusammen,

ich suche gerade ein Makro, das folgendes bewirkt:

wenn CheckBox1 und CheckBox2 angekreuzt sind, soll der Inhalt der Zelle A4 + B4 + E4 + F4 und I4 bis N4 gelöscht werden.

Insgesamt sind es 40 Checkboxen von Zeile 4 bis 23. Muss man hier für jede Zeile ein Sub schreiben, oder kann man dies auch zusammen fassen?

Zusätzlich sollte es die Haken aus beiden Checkboxen entfernen.

Ich möchte das ganze mit einem Button starten.

Kann mir hier jemand helfen?

Vielen Dank schon im voraus!

Gruß
Flo

13 Antworten

0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Florian,

schau Dir das Video im nachfolgenden Link an, villeicht kannst Du es auf Deine Erfordernisse umgestalten.

Wie Du weißt, ist VBA nicht mein Metier.

http://www.teialehrbuch.de/Kostenlose-Kurse/Excel-Basis-2003/18033-Beispiel-143-Makro-mit-relativen-Verweisen-fuer-eine-Arbeitsmappe-aufzeichnen.html

Gruß

Paul1
0 Punkte
Beantwortet von florian1010 Mitglied (754 Punkte)
Hallo Paul1,

danke für die Antwort.

Leider komme ich damit nicht so wirklich weiter.

Mir wäre schon fast geholfen, wenn in der Zeile, in der die Checkbox mitwandert (z.B. beim Sortieren), dort dann die Zellen gelöscht werden.

Danke

Gruß
Florian
0 Punkte
Beantwortet von florian1010 Mitglied (754 Punkte)
Hallo Paul1,

danke für die Antwort.

Leider komme ich damit nicht so wirklich weiter.

Mir wäre schon fast geholfen, wenn in der Zeile, in der die Checkbox mitwandert (z.B. beim Sortieren), dort dann die Zellen gelöscht werden.

Danke

Gruß
Florian
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Florian,

So könnte es gehen:

Die Checkboxen befinden sich in Spalte O und P

z.B. O4 = Checkbox 1
P4= Checkbox 2
O5 = Checkbox 3 usw....
Unter Eigenschaften der Checkboxen > LinkedCell für Checkbox1 O4 definieren usw.

Folgende Formel in Q4 und runterkopieren bis Q23:

=WENN((O4=WAHR)*(P4=WAHR);"L";"")

In Zeile 3 lege einen Autofilter von Spalte A bis Spalte Q.

Folgendes Makro sucht in Spalte Q das "L" und selektiert die Spalten in denen die Zellinhalte zu löschen sind ( wie in der Anfrage angegeben)

Außerdem werden auch Spalte O und P selektiert.

Nach betätigen des Button ist alles selektiert was zu löschen ist, es brauchen anschließend nur mit "Ent" die Inhalte gelöscht werden.
Die Checkboxen sind dann auch wieder deaktiviert
Anschließend im Autofilter in der Spalte Q auf Alle gehen, dann ist ersichtlich in welchen Zeilen die Zellen nicht gelöscht wurden.

Der Code lautet:

Private Sub CommandButton1_Click()

Selection.AutoFilter Field:=17, Criteria1:="L"
Range("A4:B23,E4:F23,I4:N23,O4:O23,P4:P23").Select
Range("P4").Activate
End Sub

Schau es Dir einmal an

Gruß

Paul1

Excel 2003

P.S.
Ich wollte das Löschen der Zellen auch in das Makro einbauen, aber da schreibt er mir verrückterweise immer 'Laufzeitfehler 28' nicht genügend Stapelspeicher
, aber ich glaube das ist nicht so tragisch
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Florian,

Das bereinigte Minimalkonzept:

http://www.file-upload.net/download-7917434/Checkbox_Makro.xls.html

Gruß

Paul1
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Florian,

Ergänzung:

Der ordnunghalber noch der Button mit Löschen:

Private Sub CommandButton2_Click()
Selection.AutoFilter Field:=17, Criteria1:="L"
Range("A4:B23,E4:F23,I4:N23,O4:O23,P4:P23").Select
Range("P4").Activate
Selection.ClearContents
Range("J26").Select
End Sub

Gruß

Paul1
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo Florian,
es sind viele If Abfragen, da aber immer andere Zellen gelöscht werden sollen, gibt es nicht viele Möglichkeiten.
Vielleicht hilfts ja weiter.

Gruß
fedjo

Private Sub CommandButton1_Click()
If CheckBox1.Value = True And CheckBox2.Value = True Then Range("A4:B4,E4:F4,I4:N4") = "": CheckBox1.Value = False: CheckBox2.Value = False
If CheckBox3.Value = True Then Range("B4") = "": CheckBox3.Value = False
If CheckBox4.Value = True Then Range("B5") = "": CheckBox4.Value = False
If CheckBox5.Value = True Then Range("B6") = "": CheckBox5.Value = False
If CheckBox6.Value = True Then Range("B4") = "": CheckBox6.Value = False
If CheckBox7.Value = True Then Range("B7") = "": CheckBox7.Value = False
If CheckBox8.Value = True Then Range("B8") = "": CheckBox8.Value = False
If CheckBox9.Value = True Then Range("B9") = "": CheckBox9.Value = False
If CheckBox10.Value = True Then Range("B10") = "": CheckBox10.Value = False
End Sub
0 Punkte
Beantwortet von florian1010 Mitglied (754 Punkte)
Hallo Zusammen,

vielen Dank für eure Antworten.

@Paul1:
funktioniert soweit echt super. Ist es aber machbar, dass wenn ich innerhalb der Tabelle z.B. nach Datum sortieren lasse, die Checkboxen "mitwandern"?

@fedjo:
muss ich das Makro für jede Zeile so erweitern, da es nur in der ersten Zeile funktioniert?

VG
Florian
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Florian,

natürlich wandern die Checkboxen auch nach dem Sortieren mit, Checkbox1 bleibt O4, Checkbox2 bleibt P4, Checkbox 3 bleibt O5, Checkbox 4 bleibt P5 usw.....

Probiere es einfach aus und füge eine Spalte mit Überschrift Datum (z.B. Spalte R) hinzu.

Alle anderen Vorgänge bleibe gleich.

Gruß

Paul1
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo nochmals,

zum Nachvollziehen und Austesten:

http://www.file-upload.net/download-7925846/Checkbox_Makro_Experiment_neu.xls.html


Gruß

Paul1
...