Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Makro zum entfernen von Zellinhalten





Frage

Hallo Excel-Spezies! Ich benötige ein Makro, das mir jede zweite Zeile der Spalte F-Z löscht und farbig kennzeichnet. Dies soll ab Zeile 5 gestartet werden. Wenn mir jemand helfen könntet, wäre das echt super! Vielen Dank im vorraus!

Antwort 1 von coros

Hi Ines,

kopiere nachfolgendes Makro in ein Standard Modul und starte es über eine Befehlsschaltfläche.

Option Explicit

Sub Löschen_und_Farbig_kennzeichnen()
Dim Wiederholungen As Long
For Wiederholungen = 5 To 65536 Step 2
Range(Cells(Wiederholungen, 6), Cells(Wiederholungen, 26)).ClearContents
Range(Cells(Wiederholungen, 6), Cells(Wiederholungen, 26)).Interior.ColorIndex = 3
Next
End Sub


Das Makro löscht ab Zeile 5 in den Spalte F bis Z in jeder 2. zeile die Inhalte und ändert die Hintergrundfarbe in rot.

Soll eine andere farbe als Rot genommen werden, so muss in dem VBA Code in der Zeile

Range(Cells(Wiederholungen, 6), Cells(Wiederholungen, 26)).Interior.ColorIndex = 3


eine andere Farbindexzahl eingetragen werden. Um die Nummern der Fabrindexzahlen zu erhalten, schau mal mal auf meiner HP in der Rubrik Beipsieldateienund dort dann in dem Beispiel 43 nach. In der Rubrik Anleitungen findest Du auch eine Anleitung (Anleitung 3) , wie Du das Makro in Deine Datei bekommst.

Ich hoffe, Du hast das so gemeint und Du kommst kalr. Wenn nicht oder bei Fragen melde Dich.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von INES

Hallo Coros!
Danke für die schnell Hilfe! Ich habe das Makro noch erweitert und das klappt auch prima!
Lieben Gruss
Ines

Antwort 3 von coros

Hi Ines,

freut mich, dass Du was mit dem VBA Code anfangen konntest. Danke Dir auch für Deine Rückmeldung.

MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

Antwort 4 von Ines

Hallo Coros!
Da Du ja ein echter Spezi bist , habe ich noch ein neues Problem für Dich!

Ich benötige aus einer Tabelle die Spalten A bis D. Diese kopiere ich in eine neue Mappe und möchte nun, dass jede Zeile der Spalten C und D sich verdoppelt, heist nachfolgend eine Zeile eingefügt wird und sich der Zellinhlat auch in der neuen Zeile befindet.

Hast Du hierfür auch eine Idee?
Wäre echt arbeitserleichternd!!!
LG
Ines

Antwort 5 von coros

Hi Ines,

kopiere nachfolgendes Makro in ein StandardModul und starte es genau wie das andere über eine Befehlsschaltfläche.

 Option Explicit

Sub Kopieren()
Dim Wiederholungen As Long
If Range("A65536").End(xlUp).Row <= 32768 Then
For Wiederholungen = 1 To Range("A65536").End(xlUp).Row
Application.StatusBar = Wiederholungen & " Datensätze bearbeitet!"
Cells(Wiederholungen, 1).Copy _
Sheets("Name des Zielblattes").Cells(Sheets("Name des Zielblattes").Range("A65536").End(xlUp).Offset(1, 0).Row, 1)
Sheets("Name des Zielblattes").Cells(Sheets("Name des Zielblattes").Range("A65536").End(xlUp).Row, 1).Copy _
Sheets("Name des Zielblattes").Cells(Sheets("Name des Zielblattes").Range("A65536").End(xlUp).Offset(1, 0).Row, 1)
Cells(Wiederholungen, 4).Copy _
Sheets("Name des Zielblattes").Cells(Sheets("Name des Zielblattes").Range("D65536").End(xlUp).Offset(1, 0).Row, 4)
Sheets("Name des Zielblattes").Cells(Sheets("Name des Zielblattes").Range("D65536").End(xlUp).Row, 4).Copy _
Sheets("Name des Zielblattes").Cells(Sheets("Name des Zielblattes").Range("D65536").End(xlUp).Offset(1, 0).Row, 4)
Next
Else
MsgBox "Zuviele Datensätze zum Kopieren vorhanden. Es können maximal 32768 Datensätze kopiert werden." & Chr(13) _
& "Bitte löschen Sie überflüssige Datensätze!"
End If
End Sub 


Bei dem Code wird der Inhalt der Spalte A und D in ein anderes Blatt kopiert und jede Zeile wird wiederholt. Wenn mehr als 32768 Zeilen mit Daten vorhanden sind, erscheint eine Meldung, da die die Anzahl an Daten ist, die maximal kopiert werden kann, da die Zahl sich ja verdoppelt und nur 65536 Zeilen in einem Tabellenblatt dargestellt werden können. Du musst allerdings in dem gesamten Makro wo der Text "Name des Zielblattes " vorkommt, den Namen des Blattes eintragen, in das die Daten kopiert werden sollen.

Ich hoffe, Du hast das so gemeint und Dir hilft das Makro. Wenn nicht oder bei Fragen, melde Dich

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von Ines

Hallo Coros!
Geht das auch etwas allgemeiner?
Gut wäre es, wenn das Makro erst nach dem Kopiervorgang einsetzt. Den muss ich nämlich unterschiedlich vornehmen.
Gestartet werden soll der Vorgang in Zelle C3. Die Arbeitsmappe soll dabei auch keine Rolle spielen. Einfach drauf los.
Vielen Dank im Voraus!

LG Ines

Antwort 7 von coros

Hallo Ines,

mein Makro war etwas daneben, hatte das irgendwie falsch verstanden. Allerdings werde ich aus Deiner letzten Antwort nicht so recht schlau. Nach welchem Kopiervorgang soll den das Makro gestartet werden? Auch wenn Du schreibst, das die Arbeitsmappe dabei keine Rolle spielen braucht, spielt das schon eine Rolle. Man muss dem Makro schon sagen, wohin die Daten kopiert werden sollen. Zumindestens muss man wissen, ob es beim Kopieren, außer der Quelldatei, nur noch eine geöffnete Datei gibt, in die die Werte kopiert werden sollen. Dann könnte man nach geöffneten Exceldateien suchen lassen und den Dateinamen der geöffneten Datei auslesen und diesen dann an das Makro übergeben. Aber dazu benötigt man schon noch ein paar Infos mehr als die, die Du bis jetzt gegeben hast.

Nachfolgend mal das Makor, welches nun die Spalte A-D kopiert und in Spalte C-D jeweils den Wert aus der Zeile darüber wiederholt. Die Daten werden von dem aktiven Blatt in das Blatt "Name des Zielblattes" kopiert.

Option Explicit

Sub Kopieren()
Dim Wiederholungen As Long, Freie_Zeile As Long
If Range("A65536").End(xlUp).Row <= 32768 Then
For Wiederholungen = 1 To Range("A65536").End(xlUp).Row
Application.StatusBar = Wiederholungen & " Datensätze bearbeitet!"
Range(Cells(Wiederholungen, 1), Cells(Wiederholungen, 4)).Copy _
Sheets("Name des Zielblattes").Cells(Sheets("Name des Zielblattes").Range("C65536").End(xlUp).Offset(1, 0).Row, 1)
Freie_Zeile = Sheets("Name des Zielblattes").Range("C65536").End(xlUp).Row
Range(Cells(Wiederholungen, 3), Cells(Wiederholungen, 4)).Copy _
Sheets("Name des Zielblattes").Cells(Freie_Zeile + 1, 3)
Next
Else
MsgBox "Zuviele Datensätze zum kopieren vorhanden. Es können maximal 32768 Datensätze kopiert werden. Bitte löschen Sie überflüssige Datensätze!"
End If
End Sub


Aber ich gehe mal davon aus, dass der Code Dich auch nicht weiter bringt. Allerdings müsstest Du dann schon mal etwas genauer beschhreiben, was Du möchtest. Die Lösung kann aber etwas dauern, da ich jetzt Feierabend mache und zunächst noch was zu erledigen habe bis ich dann zu Hause eintreffe.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 8 von Ines

Hallo Coros!
Ich versuch es noch mal ganz neu!
Ich habe eine Mappe mit den Spalten A bis D, die mit Daten gefüllt ist. Nun möchte ich ein Makro, das ab der Zeile 3 abwärts meine Daten verdoppelt., also unter jeder Zeile eine neue einfügt und den Inhalt der vorherigen hineinkopiert.

Vorher:
485 GWG-Museumspädagogik
2093 Honorar-Museumspädagogik

Nachher
485 GWG-Museumspädagogik
485 GWG-Museumspädagogik
2093 Honorar-Museumspädagogik
2093 Honorar-Museumspädagogik

Diese Daten stehen in den Spalte C bis D!

Ich hoffe ich habe mich diesmal verständlicher ausgedrückt.
LG
Ines

Antwort 9 von coros

Hi Ines,

ich hoffe, dass ich mit dem Makro jetzt richtig liege. Kopiere es in ein StandardModul und starte es wieder über eine Schaltfläche.

Option Explicit
Sub Kopieren()
Dim Wiederholungen As Long
Application.ScreenUpdating = False
If Range("A65536").End(xlUp).Row <= 32768 Then
For Wiederholungen = 3 To Range("A65536").End(xlUp).Row * 2 Step 2
Application.StatusBar = Wiederholungen & " Datensätze bearbeitet!"
Rows(Wiederholungen).Insert Shift:=xlDown
Range(Cells(Wiederholungen - 1, 3), Cells(Wiederholungen - 1, 4)).Copy _
Cells(Wiederholungen, 3)
Next
Else
MsgBox "Zuviele Datensätze zum kopieren vorhanden. Es können maximal 32768 Datensätze kopiert werden. Bitte löschen Sie überflüssige Datensätze!"
End If
Application.StatusBar = False
End Sub


Der Code fügt Dir immer eine Leerzeile ein und fügt in diese Leerzeile die Daten aus der vorherigen Spalte und dort aus Spalte C und D ein.

Ich hoffe, ich hab’s kapiert und Dir das richtige Makro erstellt. Wenn nicht oder bei Änderungswünschen melde Dich.

MfG,
coros
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 10 von Ines

Hallo Coros!
Vielen Dank für die Hilfe, funktioniert super!
eine Kleinigkeit hat sich jedoch noch herausgestellt.

1. Meine Spalten F bis R enthalten jetzt noch eine Formel, die ebenfalls mit kopiert werden soll.

2. Der Vorgang soll vor der letzten beschriebenen Zeile aufhören, da hier eine Summen-Zeile gebildet wird.

Vielleicht bekommst Du das ja noch hin. Wäre echt super.
Vielen Dank im Voraus.

LG
Ines

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: