PDA

Vollständige Version anzeigen : Zweite VBA Frage


volker1990
25.08.2017, 12:42
Hi zusammen, nachdem mir nun schon wunderbar geholfen wurde, stellt sich mir eine zweite Frage zum Thema vba. Ich bin absoluter Anfänger was vba angeht.

Ich habe Daten welche in einer Tabelle formatiert wurden. Ich möchte nun dass mir vba per Klick auf eine Schaltfläche die aktuell ausgewählte Zeile kopiert und ans Ende der Tabelle einfügt.

Könnt ihr mir auch hier helfen?

Liebe Grüße

Hajo_Zi
25.08.2017, 12:48
Option Explicit

Sub eNDE()
Dim Loletzte As Long
Loletzte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
Rows(ActiveCell.Row).Copy Rows(Loletzte)
End Sub


<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

volker1990
25.08.2017, 12:56
Das klappt vielen vielen Dank! Aber eine erneute Frage: Wie kann ich es rückgängig machen, wenn ich versehentlich die falsche Zeile kopiert habe? Gibt es auch hierfür vielleicht einen code den ich auf einer schaltfläche anwenden kann?

Hajo_Zi
25.08.2017, 13:05
Option Explicit
Dim Loletzte As Long

Sub eNDE()
Loletzte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
Rows(ActiveCell.Row).Copy Rows(Loletzte)
End Sub

Sub Zurueck()
Loletzte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Rows(Loletzte).Delete
End Sub


<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

volker1990
25.08.2017, 13:13
ds funktioniert leider bei mir nicht. Es erschein die Fehlermeldung: Variable nicht definiert.

Hajo_Zi
25.08.2017, 13:14
nur wenige schauen auf Deinen Rechner und sehen die Datei.
Ich möchte gerne den Fehler im Original sehen.

Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.

Ein Nachbau sieht meist anders aus als das Original. <B>Darum sollte das Original verlinkt werden.</b>

Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten <a href="http://www.ms-office-forum.de/forum/showthread.php?t=322895">anonymisieren bzw. pseudonymisieren.</a>

Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Test, Mappe, Beispiel usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.

Bei mir nicht.

<a href="http://Hajo-Excel.de/index.htm" target="_blank" title="Hajo's Excelseiten">Gruß Hajo</a>

volker1990
30.08.2017, 14:32
Hi Hajo,

entschuldige bitte dass ich so spät erst geantwortet habe. Meine Folgefrage hat sich in der Zwischenzeit erledigt. Dennoch vielen Dank! Liebe Grüße

volker1990
05.09.2017, 11:25
Hi Hajo,

ich habe nun etwas mit deiner Codierung gearbeitet und getestet.
In der Zwischenzeit hat sich mir weiteres folgendes Problem ergeben.

Dein Code funktioniert solange einwandfrei, bis ich mir in der Tabelle in einzelnen Spalten die Werte anhand von Funktionen ausgeben lasse, zum Beispiel anhand eines Sverweises. Wenn ich nun also eine Zeile kopieren möchte mit der Codierung, so zeigt er mir in jeder Zelle deren Wert anhand einer Funktion ausgegeben wird die Fehlermeldung: "#WERT"

Ich schicke dir heute abend auch gerne mal die Tabelle zu, so kannst du konkret sehen wo der Fehler liegt. Vorher komme ich leider nicht an die Datei rein. Vielleicht hast du aber vorab schon eine allgemeine Antwort darauf?

Liebe Grüße und vielen Dank vorab.

Heidjer
05.09.2017, 12:11
Das wird vermutlich daran liegen, dass mit dem Code von Hajo die Formeln der Zellen kopiert werden und nach dem Einfügen Fehler aufweisen bspw. aufgrund relativer Zellbezüge.
Wenn du nur den Wert am Ende der Tabelle einfügen willst, den die Formel in der markierten Zelle erzeugt, und nicht die Formel selbst, dann sollte das wie folgt funktionieren:
Option Explicit
Dim Loletzte As Long

Sub eNDE()
Loletzte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
Rows(ActiveCell.Row).Copy
Rows(Loletzte).PasteSpecial Paste:=xlPasteValues
End Sub

Sub Zurueck()
Loletzte = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Rows(Loletzte).Delete
End Sub

volker1990
05.09.2017, 13:53
Hi Heidier,

vielen Dank für deine Antwort. Die Formeln müssen leider mitkopiert werden. Wäre es also eine Lösung, die fixierten Zellbezüge zu relativen umzuwandeln, denn die relativen müssten sich doch anpassen nehme ich an oder? Oder aber ich hätte bestimmte relative absolut machen müssen. Das kontrolliere ich gleich heute abend mal. Das wäre ja die einfachste lösung.

Liebe Grüße

volker1990
05.09.2017, 14:24
irgendwo ist hier der wurm drin


er will mir nicht mehr die zeile kopieren und ans ende der tabelle setzen.

volker1990
05.09.2017, 14:45
Ich habe die befürchtung dass er mir die zeile irgendwohin kopiert wo ich sie nicht finde. Auch über suchen finde ich sonst aber keine einträge...

RPP63neu
05.09.2017, 14:49
Wo ist die modulweite Variable in Deinem Modulkopf geblieben?
Sollen wir raten, welche Formeln Du in der Tabelle hast?
Warum willst Du überhaupt redundante Daten per Kopie vorhalten?

Nix als Fragen …

Gruß Ralf

volker1990
05.09.2017, 15:00
Hi, hier mal meine Datei... Ich komme einfach nicht weiter. Ich habe sie zwecks sensibler Daten gekürzt und Tabellen rausgenommen. Die Funktionen sind aber auch in der originaldatei an der gleichen stelle, nur dass sie mir dort einen wert ausgeben. über die Schaltflächte Artikel kopieren, sollte eigentlich eine Kopie mit Formeln ans Tabellenende gesetzt werden.

volker1990
05.09.2017, 17:36
Hi, die Antwort auf die Frage warum ich die Funktion benötige ist die, dass ich schnellstmöglich so einfach wie möglich eine Masse an Daten erzeugen möchte. Dabei sollen sich die Daten aber nicht eins zu eins gleichen, sondern die Funktion muss intelligent genug sein Formel an die jeweilige Zeile anzupassen beim Kopiervorgang. das hat auch alles mal wunderbar geklappt, nur jetzt leider nicht mehr. der code gibt mir auch keinen fehler aus, nur scheint nichts zu passieren wenn ich auf die schaltfläche klicke. Ich vermute dass der mir die zeile irgendwohin kopiert wo ich es nicht finde oder einsehen kann. Wenn ich den code richtig verstehe, so kopiert er mir ja die zeile immer unter die letzte von mir erstellte. Das kann ja theoretisch auch außerhalb der Tabelle sein. Nun war ich natürlich schon so schlau und habe mir eine testzeile erstellt um diese per code zu kopieren und dann per suchen zu finden. aber excel liefert mir hier kein Ergebnis. Liebe Grüße