Wie kopiert Excel in VBA eine Zeile in ein anderes Tabellenblatt in die NÄCHSTE LEERE ZEILE?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hey, also um in dein Makro die nächste freie Zeile im anderen Tabellenblatt zu suchen, kannst du diesen Code in dein Makro mit einbauen:

Eigentlich müsste in deinem Code jetzt irgendwo folgendes stehen:

Selection.Copy

Sheets("deine Tabelle wo es rein soll").Select

Danach folgen Code einfügen:

leereZeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row + 1        
Range("A" & leereZeile & ":A" & leereZeile).Select

Dann sollte bei dir wieder folgendes kommen:

ActiveSheet.Paste

Das ganze bewirkt das in deiner Tabelle wo die Daten rein sollen, in Spalte A die nächste freie Zeile gesucht wird und diese dann makiert wird. Alles andere passiert durch dein Makro.



Zum zweiten Teil deiner Frage:
Du kannst mit einer Wenn Abfrage kein Makro direkt starten, dazu musst du den Umweg über eine Funktion gehen.

Dafür musst du aber erstmal eine Funktion anlegen welche sich wenn die Bedingung erfüllt diese auslöst und dann steht in dieser Funktion dein Makroname.

Also zum Beispiel, wenn in A1 Nein steht soll das Makro mit dem Namen Test ausgeführt werden, dann ist folgendes zu machen.

Gehe mit ALT+F11 in den VBA Modus und lege ein neues Modul an (Falls dein Makro nicht schon in einem Modul liegt), dort kommt erstmal folgender Code rein:

Function makro1_start()
'** Prozedur aufrufen
test
End Function


Sub test()
MsgBox "Makro test wurde gestartet"
End Sub

Um das jetzt zu Prüfen, nehmen wir in irgendeiner Zelle folgende Wenn Formel:

=WENN(A1="Nein";Makro1_start();"nichts")

Wenn alles geht sollte sich wenn in Zelle A1 Nein steht ein Meldungsfenster öffnen welches dir das auch bestätigt.

Das MsgBox "Makro 1 wurde gestartet" musst du dann mit deinem Makrocode ersetzen.

Ich hoffe ich konnte dir damit ein wenig weiter helfen, kommst du damit klar?

Hoffentlich habe ich nichts vergessen :)))

Ich habe kein VBA zur Hand, aber für die erste freie Zeile kannst du mit der Worksheetfunction ANZAHL2 über die Zeilen iterieren, um die erste freie Zeile zu finden.

Wenn du das Makro in einem Modul hast, es öffentlich ist und einen Wert nur zurück gibt, siehst du es ganz normal unter den Excelfunktionen aufgelistet. Dann kannst du deine Eigene Funktion auch innerhalb von WENNS verwenden.

Woher ich das weiß:Berufserfahrung – Programmierer

maximilianus7  25.07.2015, 14:12

... kannst du mit der Worksheetfunction ANZAHL2 über die Zeilen iterieren, um die erste freie Zeile zu finden.

wie soll das gehen?

0
Suboptimierer  25.07.2015, 15:05
@maximilianus7

Wie gesagt habe ich kein VBA zur Hand, deswegen seien mir kleinere Syntaxfehler oder Bezeichnungsfehler verziehen.

Die Idee:

Dim i As Integer
i = 1
While Application.WorksheetFunction.CountA(Range(i&":"&i)) <> 0
  i = i + 1
Wend
1