Herbers Excel-Forum - das Archiv

bestimmte Zeilenlänge u. nur Zellwerte verschieben

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: bestimmte Zeilenlänge u. nur Zellwerte verschieben
von: Jörg

Geschrieben am: 08.04.2005 21:10:46
Hallo zusammen,
mit unten stehendem Script verschiebe ich einen vorher zu markierenden Bereich von einem Sheet ins andere.
So ist es zurzeit:
mit einem Doppelklick starte ich eine UserForm
dann markiere ich die zu kopierenden Zellen
anschließend wähle ich über eine ComboBox der Userform das Zielscheet aus
und starte unten stehendes Skript über einen Button ebendieser UserForm.
die komlette Zeile einschließlich aller Formatierungen wird verschoben
die UserForm schließt sich

So sollte es sein:
per Doppelklick rüfe ich die UserForm auf
der Doppelklick legt auch die zu kopierende Zeile fest
ich wähle nur noch das Zielsheet aus der ComboBox
und es werden aus den Zellen A-Z die Werte einschließlich Leerzellen verschoben, ohne in der Quell- oder Zielzeile die Formatierung, zulässige Eingaben etc. zu verändern
die UserForm schließt sich
------------------------------------------------------------------------------
UserForm1:
Option Explicit
Private Sub CommandButton1_Click()
Call verschieben(Sheets(Me.ComboBox1.Value))
Me.Hide
Unload Me
End Sub

Private Sub UserForm_Initialize()
Dim wb As Worksheet
For Each wb In Worksheets
If wb.Name <> wshVon.Name Then
Me.ComboBox1.AddItem wb.Name
End If
Next wb
End Sub

-------------------------------------------------------------------------------

Modul1:
Option Explicit
Public wshVon As Worksheet

Sub verschieben(wshNach As Worksheet)
Application.EnableEvents = False
' zähle in Spalte 1 die Felder bis zum ersten leeren und setze den Wert gleich i
Dim i As Integer

i = 0
Do
i = i + 1
Loop Until IsEmpty(Sheets(UserForm1.ComboBox1.Value).Cells(i, 1))

' kopiere markierte Felder in Zeile i beginnend mit Spalte 1
Selection.Copy wshNach.Cells(i, 1)

' lösche markierte Felder
Selection.Delete shift:=xlUp

Application.EnableEvents = True
End Sub
Bild

Betrifft: AW: bestimmte Zeilenlänge u. nur Zellwerte verschi
von: Uwe Küstner

Geschrieben am: 11.04.2005 00:35:28
Hallo Jörg,
probier es mal so:
Sub verschieben(wshNach As Worksheet)
Dim i As Long
On Error GoTo Ende
Application.EnableEvents = False
With wshNach
i = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Range(.Cells(i, 1), .Cells(i, 26)).Value = _
Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 26)).Value
End With
Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 26)).ClearContents
Ende:
Application.EnableEvents = True
End Sub
Gruß Uwe
Bild

Betrifft: AW: bestimmte Zeilenlänge u. nur Zellwerte verschi
von: Jörg

Geschrieben am: 11.04.2005 21:41:16
Hallo Uwe, vielen Dank für deine Antwort.
Das Kopieren funktioniert schon einmal prächtig - genau wie ich es mir gewünscht habe. Es hilft mir, die Formatierung der einzelnen Sheets flexibler zu gestalten.
Nur das mit dem Löschen der kopierten Zeile aus dem alten Sheet, wodurch das Kopieren zum Verschieben würde, will so nicht gelingen.
Vielleicht hast du ja noch einen Tipp. Ansonsten ist es eine interessante Herausforderung für mich, um zu lernen. Ich bin schon mal am Tüfteln...
Gruß Jörg
Bild

Betrifft: AW: bestimmte Zeilenlänge u. nur Zellwerte verschi
von: Jörg

Geschrieben am: 11.04.2005 23:40:13
Hallo Uwe,
nun funktioniert es. Mein (Anfänger)-Fehler war, dass ich clearContents über eine geschützte Zelle mit Formel hinaus anwenden wollte. Nachdem ich die Zeilen davor und danach getrennt lösche, funktioniert es einwandfrei. Und wieder etwas hinzugelernt :-)
Nochmals herzlichen Dank
Gruß Jörg
 Bild
Excel-Beispiele zum Thema "bestimmte Zeilenlänge u. nur Zellwerte verschieben"
Befindet sich die aktive Zelle in einem bestimmten Bereich? Werte eins bestimmten Monats summieren
Werte 1 und 0 in einem bestimmten Verhältnis zufällig anordnen Alle Links zu einer bestimmten Arbeitsmappe löschen
Anzahl eines bestimmten Wochentages im Monat Alle Dateien ab einem bestimmten Datum listen
Daten eines bestimmten Jahres filtern Word mit bestimmtem Dokument starten
Bestimmte Anzahl von Zeichen zulassen Zeilen löschen, wenn in bestimmten Spalten keine Werte stehen