Registriert seit: 01.02.2016
Version(en): 2010
Hallo Experten, ich stehe mit meinem (funktionierendem) Code zum einfügen einer Leerzelle in ein Exceltabellenblatt vor einem Problem. Code: Function TryLeereZelleEinf(Zeile, Spalte) Dim vbSpalte As Variant vbSpalte = Range(Cells(Zeile, Spalte), Cells(Cells(Rows.Count, Spalte).End(xlUp).Row, Spalte)) Range(Cells(Zeile + 1, Spalte), Cells(Cells(Rows.Count, Spalte).End(xlUp).Row + 1, Spalte)) = vbSpalte Cells(ActiveCell.Row, Spalte) = "" ' häßlich!!- aber derzeit notwendig End Function
Sub ZelleEinf() Call TryLeereZelleEinf(ActiveCell.Row, ActiveCell.Column) End Sub
Wie schaffe ich es beim Einfügen einer Leerzelle, dass diese dritte häßliche Programmierzeile wegfällt und nur noch ganz elegant die ersten beiden Programmierzeilen übrigbleiben.
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Hallo! Stimmt, hübsch hässlich … :21: Würde nicht (kompletter Code!) folgendes reichen? ActiveCell.Insert xlShiftDown
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 01.02.2016
Version(en): 2010
Hallo Ralf,
danke für deine Antwort, aber leider reicht dies nicht. Es muss über Felder laufen, da es darum geht sehr viel Text eine Zelle nach unten zu verschieben.
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Nichts anderes macht mein Einzeiler, Algor. Vielleicht bin ich heute begriffsstutzig, vielleicht hast Du Deine Anforderung aber auch ungenau formuliert.
Beispieldatei?
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 10.04.2014
Version(en): 2016 + 365
08.02.2016, 16:09
(Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2016, 16:09 von Rabe.)
Hi, und warum nicht so? Code: Function TryLeereZelleEinf(Zeile, Spalte) Range(Cells(Zeile, Spalte), Cells(Cells(Rows.Count, Spalte).End(xlUp).Row, Spalte)).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove End Function
Sub ZelleEinf() Call TryLeereZelleEinf(ActiveCell.Row, ActiveCell.Column) End Sub
oder noch kürzer: Code: Sub ZelleEinf() ActiveCell.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove End Sub
[edit] Ooh, sehe grade, das ist ja genau das, was Ralf schon vorgeschlagen hat.
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
08.02.2016, 16:14
(Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2016, 16:14 von RPP63.)
Hi Ralf! Siehe #2 Ich nehme allerdings immer die korrekte XlInsertShiftDirection-Enumeration auch, wenn es "kürzer" geht. Zu CopyOrigin wollte ich nichts schreiben, da TE zu ungenau war.
Ebenfalls EDIT: Dann sind wir uns ja mal wieder einig! :19:
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Zusammen, Insert ist langsamer als das Verschieben per Feldvariable. Siehe http://www.clever-excel-forum.de/Thread-...meldung-NV@Algor Geht es um einen Codedesignwettbewerb? Ich verstehe Dein Problem gar nicht. Wenn eine Zelle geleert werden soll, muss das halt entsprechend programmiert werden. Da ist doch gegen Deine "hässliche" Zeile nichts einzuwenden. Schneller gehts nicht. Gruß Uwe
Registriert seit: 10.04.2014
Version(en): 2016 + 365
Hi, (08.02.2016, 16:22)Kuwer schrieb: Da ist doch gegen Deine "hässliche" Zeile nichts einzuwenden. Schneller gehts nicht. .ClearContents oder so?
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Hi Uwe! Zitat:Insert ist langsamer als das Verschieben per Feldvariable. Akademische Diskussion? Es geht um das Einfügen EINER leeren Zelle. Auch, wenn Algor wohl eine Kalkulation mit einer Textverarbeitung (Zitat: "Sehr viel Text") verwechselt, kann ich mir nicht vor- und werde es auch nicht nachstellen, dass dies bei einer Zelle bemerkbar sein sollte. Es werden sicherlich (intern) nicht alle Zellen einzeln ausgeschnitten und im Offset eingefügt, sondern eher die Bezüge angepasst. My two cents, Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
(08.02.2016, 16:50)RPP63 schrieb: Zitat:Insert ist langsamer als das Verschieben per Feldvariable. Akademische Diskussion? Es geht um das Einfügen EINER leeren Zelle. Auch, wenn Algor wohl eine Kalkulation mit einer Textverarbeitung (Zitat: "Sehr viel Text") verwechselt, kann ich mir nicht vor- und werde es auch nicht nachstellen, dass dies bei einer Zelle bemerkbar sein sollte. Es werden sicherlich (intern) nicht alle Zellen einzeln ausgeschnitten und im Offset eingefügt, sondern eher die Bezüge angepasst. vielleicht, vieleicht auch nicht ... Gruß Uwe
|