Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1416to1420
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
MessageBox "Anzahl"
27.03.2015 08:52:44
Müller
Hallo zusammen....
für folgenden Code würde ich gerne die ANzahl der einzufügenden Zeilen bestimmen.
Sub Zeileeinfügen()
' Aktuelle Zeile kopieren, unterhalb Zeile einfügen und Inhalte in Zellen ohne Formel löschen
Dim Zelle As Range
ActiveCell.EntireRow.Copy
Cells(ActiveCell.Row + 1, 1).Insert Shift:=xlDown
For Each Zelle In Range(Cells(ActiveCell.Row + 1, 1), Cells(ActiveCell.Row + 1, 255).End( _
xlToLeft))
If Not Zelle.HasFormula Then
Zelle.ClearContents
End If
Next Zelle
Cells(ActiveCell.Row + 1, 1).Select
End Sub
1. ICh hätte gerne eine Abfrage für die ANzahl der Zeilen. Z.B bei Eingabe 3, dass er nach der aktiven Zeile dann 3 neue einfügt.
2. mein zweites Problem ist der Löschbefehl, bei Nichtvorhanden einer Formel in einer Zelle. Wie kann ich den Bereich festlegen, damit er z.b. nur ab Spalte B bis DP Werte löscht, falls keine Formel vorhanden ist? Ich habe teilweise verbundene Zeilen und daher Probleme?!
3. Was muss ich ändern, damit ich anstatt eine Zeile, eine Spalte einfügen kann? gleiches Prinzip?
bekomms nicht hin :(
Besten Dank!

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MessageBox "Anzahl"
27.03.2015 09:43:28
Daniel
Hi
probiers mal so:
Sub ZeileEinfügen()
Dim Z As Long
Dim Anzahl As Long
Anzahl = Application.InputBox("Anzahl", "Zeilen Einfügen", Type:=1)
If Anzahl = 0 Then Exit Sub
Z = ActiveCell.Row
Rows(Z).Copy
Rows(Z + 1).Resize(Anzahl).Insert Shift:=xlDown
On Error Resume Next
Range(Cells(Z + 1, 2), Cells(Z + Anzahl, "DP")).SpecialCells(xlCellTypeConstants, 3). _
ClearContents
On Error GoTo 0
End Sub
für Spalten gehts analog.
gruß Daniel

AW: MessageBox "Anzahl"
27.03.2015 09:57:05
Müller
Hallo Daniel,
besten Dank der schnellen Antwort :-)
Zeilen einfügen funktioniert wunderbar, nur bei den Spalten habe ich Probleme!
Wo genau muss ich etwas ändern?
Er fügt mir jedes Mal nur Zeilen ein.
Gruß und Danke!

Anzeige
AW: MessageBox "Anzahl"
27.03.2015 10:06:28
Daniel
Hi
du musst "Row" durch "Column", "Rows" durch "Columns" und "Zeilen" durch "Spalten" ersetzen.
in der Resize-Funktion muss die Anzahl in den zweiten Parameter (den für die Spaltenanzahl): .Resize(, Anzahl)
das "Shift:=xldown" muss zu "shift:=xltoright" werden
das mit dem Löschen der Formeln macht dann so wie du es beschrieben hast keinen Sinn mehr, dh diese Zeilen kannst du löschen
falls doch, müsste auch hier die Variablen in den zweiten Parmeter und die fixe Zeilenzahl in den ersten verlagern.
Gruß Daniel

AW: MessageBox "Anzahl"
27.03.2015 09:53:31
JoWE
Hi,
Sub test()
Rows(ActiveCell.Row & ":" & InputBox("Einfügen von Zeilen", _
"wieviel Zeilen sollen eingefügt werden?", 3)).Insert Shift:=xlDown
End Sub
Gruß
Jochen

Anzeige
AW: MessageBox "Anzahl"
27.03.2015 10:05:18
Müller
Hallo Daniel, hallo JoWe,
besten Dank der schnellen Antwort :-)
Zeilen einfügen funktioniert wunderbar, nur bei den Spalten habe ich Probleme!
Wo genau muss ich etwas ändern?
Er fügt mir jedes Mal nur Zeilen ein.
Gruß und Danke!

AW: MessageBox "Anzahl"
27.03.2015 10:16:38
JoWE
Sub test()
For i = 1 To InputBox("Einfügen von Spalten", _
"wieviel Spalten sollen eingefügt werden?", 3)
ActiveCell.Insert shift:=xlToRight
Next
End Sub

AW: MessageBox "Anzahl"
27.03.2015 10:22:55
Müller
hm iwie funktioniert das nicht. Der code von Daniel funktioniert 1a.
Weißt du was ich tun muss, um diesen für die Spalten anzuwenden?
Außerdem habe ich ich Formeln in den Zellen, die mit in die neuen Zellen(Spalten) kopiert werden müssten.
Das funktioniert mit dem Code von Daniel 1a.
Nur für Spalten bekomm ichs nicht hin...

Anzeige
AW: MessageBox "Anzahl"
27.03.2015 11:17:07
JoWE
Hi,
dann evtl. so:
Sub test1()
For i = ActiveCell.Column To ActiveCell.Column + _
InputBox("Einfügen von Spalten", _
"wieviel Spalten sollen eingefügt werden?", 3)
Columns(i).Insert
Next
End Sub

AW: MessageBox "Anzahl"
27.03.2015 11:22:22
JoWE
Hi,
dann evtl. so:
Sub test1()
For i = 1 To InputBox("Einfügen von Spalten", "wieviel Spalten eingefügen?", 3)
Columns(ActiveCell.Column).Insert
Next
End Sub

AW: MessageBox "Anzahl"
27.03.2015 10:41:51
Klexy
Bin etwas spät dran, hab es aber etwas ausführlicher gemacht, damit du es leichter anpassen bzw. auf andere Fälle übertragen kannst.
Vor allem habe ich mit Variablen gearbeitet, was dich flexibler macht bei der Anpassung an neue Gegebenheiten.
Zu Frage 3 ist dann die gleiche Logik wie für "Row" für "Column" anzuwenden.
Sub Zeileneinfügen()
' Aktuelle Zeile kopieren, unterhalb Zeile x Mal einfügen und Inhalte in Zellen ohne Formel lö _
schen
Dim Hier As Range
Set Hier = ActiveCell
Dim ersteLöschSpalte As Integer, letzteLöschSpalte As Integer
ersteLöschSpalte = 2 'Spalte B
letzteLöschSpalte = 120 ' Spalte DP
Dim neuZeilen As Range, neuLöschBereich As Range
Dim Zelle As Range ' eigentlich nicht nötig, weil "Each Zelle aus einem Range" automatisch  _
ein Range ist
Dim Anzahl As Integer
Anzahl = InputBox(Chr(13) & Chr(13) & "Bitte Anzahl der Kopien eintragen" & Chr(13) & "", " _
Auswahl")
Set neuZeilen = Range(Cells(Hier.Row + 1, 1), Cells(Hier.Row + Anzahl, 1))
Hier.EntireRow.Copy
neuZeilen.EntireRow.Insert Shift:=xlDown
Set neuLöschBereich = Range(Cells(Hier.Row + 1, ersteLöschSpalte), Cells(Hier.Row + Anzahl,  _
letzteLöschSpalte))
For Each Zelle In neuLöschBereich
If Not Zelle.HasFormula Then
Zelle.ClearContents
End If
Next Zelle
Cells(Hier.Row + 1, 2).Select
End Sub

Anzeige
AW: MessageBox "Anzahl"
27.03.2015 11:12:46
Müller
Hallo klexy,
vielen Dank deiner Mühe!!!
Funktioniert soweit, auch für die Spalten...
nur Problem:
Meine Spalten beinhalten teilweise nur Werte, aber teilweise auch Formeln. Z.b Spalte D mit Formeln, und E keine Formeln.
WIe passe ich das jetzt an, dass die neuen Spalten in den jeweiligen Zellen nur Formeln und keine Werte der vorhergehenden Spalte übernehmen?
Außerdem eine andere Frage:
nach Ausführung des Makros springt der Cursor immer an eine andere Stelle, als die zuletzt markierte Zeile? Woran liegt das?
Kann man das Makro iwie beschleunigen?

Anzeige
AW: MessageBox "Anzahl"
27.03.2015 12:01:25
Klexy
Am Ende des Makros springt der Cursor dorthin, wo man es ihm sagt:
Cells(Hier.Row + 1, 2).Select

Kannst du je beliebig ändern. Das ist ja der Vorteil von Variablen.
Beschleunigen? Nicht dass ich wüsste.
Den Rest schau ich mir heute nachmittag an.

AW: MessageBox "Anzahl"
27.03.2015 15:05:57
Klexy
Verstehe das Problem nicht.
Mit Insert Shift:=xlDown überträgst du auch die Formeln und die Formate, wenn welche vorhanden sind.
Entsprechend bleiben diese Formeln bei Zelle.HasFormula stehen.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige