AW: UserForm - Format übernehmen + Einsortieren
14.01.2015 14:07:40
Christoph
Hallo Klaus,
vielen Dank für Deine Antwort. Du hast mir sehr geholfen und ich bin ein schritt weitergekommen - habe den Befehl etwas erweitern müssen.
Zwei Probleme bestehen allerdings noch:
1.) in der jetzigen Form werden auch die Inhalte der vorherigen Zeile mit übernommen - ich möchte allerdings nur das Format und die Formel übernehmen. Ich weiß, dass dies über den Befehl '.SpecialCells(xlCellTypeConstants).ClearContents' geht. Wie kann ich diesen in mein bestehendes Makro einbauen?
Private Sub CommandButton1_Click()
Dim lZeile As Long
With Tabelle1
lZeile = .Cells(.Rows.Count, 1).End(xlUp).Row 'letzte Zeile bestimmen
.Cells(lZeile, 1).EntireRow.Copy 'ganze Zeile kopieren
.Cells(lZeile, 1).Insert xlDown
.Cells(lZeile + 1, 1).EntireRow.PasteSpecial xlPasteFormats
.Cells(lZeile + 1, 1).EntireRow.PasteSpecial xlPasteFormulas
Application.CutCopyMode = False 'Kopierameisen abschalten
.Cells(lZeile + 1, 1) = CStr("Neuer Eintrag Zeile " & lZeile)
ListBox1.AddItem CStr("Neuer Eintrag Zeile " & lZeile)
ListBox1.ListIndex = ListBox1.ListCount - 1
End With
End Sub
2.) Ich hänge immer noch bei der Sortierfunktion, da ich diese in mein Makro zum speichern eines neuen Eintrages integrieren möchte. Mit dem Speichern eines Eintrages soll die gesamte Liste neu sortiert werden nach einem Startdatum, welches in Spalte I befindlich ist.
Private Sub CommandButton4_Click()
Dim lZeile As Long
If ListBox1.ListIndex = -1 Then Exit Sub
If Trim(CStr(TextBox1.Text)) = "" Then
MsgBox "Sie müssen mindestens einen Namen eingeben!", vbCritical + vbOKOnly, "FEHLER!"
Exit Sub
End If
lZeile = 6
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) ""
If ListBox1.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
Tabelle1.Cells(lZeile, 1).Value = Trim(CStr(TextBox1.Text))
Tabelle1.Cells(lZeile, 25).Value = TextBox2.Text
Tabelle1.Cells(lZeile, 26).Value = TextBox3.Text
Tabelle1.Cells(lZeile, 27).Value = TextBox4.Text
If ListBox1.Text Trim(CStr(TextBox1.Text)) Then
Call UserForm_Initialize
If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
End If
Exit Do
End If
lZeile = lZeile + 1
Loop
End Sub