Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Verbessertes Einfügen einer Leerzellen unter der Verwendung von Feldern
#1
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.
Antworten Top
#2
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)
Antworten Top
#3
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.
Antworten Top
#4
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)
Antworten Top
#5
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.
Antworten Top
#6
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)
Antworten Top
#7
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. Wink

Gruß Uwe
Antworten Top
#8
Hi,

(08.02.2016, 15:22)Kuwer schrieb: Da ist doch gegen Deine "hässliche" Zeile nichts einzuwenden. Schneller gehts nicht. Wink

.ClearContents
oder so?
Antworten Top
#9
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)
Antworten Top
#10
(08.02.2016, 15: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 ...  Sleepy

Gruß Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste