Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
VBA-Zeile einfügen / bestimmte Zeilen löschen
09.09.2016 12:34:47
Berndt
Hallo Freunde,
folgendes Problem, welches mich beschäftigt:
Button "neue Aufgabenzeile einfügen":
- Das Makro soll unterhalb der Ersten Tabelle eine neue Apalte einfügen (mit der Formatierung von obiger Zeile) und die 5 SummenFormeln aktualisieren
Button "Tabellenblatt bereinigen":
- Das Makro soll alle Zeilen mit Status "erledigt" löschen
- bevor diese gelöscht werden soll noch ein Warnhinweis "Wollen Sie die erledigten Aufgaben wirklich löschen" mit OK und Abbrechen aufklappen
Ist das Umsetzbar?
Hier die Bsp.Datei
https://www.herber.de/bbs/user/108094.xlsx
Ich danke euch jetzt schon mal für eure Hilfe.
VG Berndt

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Feedbacke in anderen Beiträgen?
09.09.2016 13:17:08
Berndt
Danke.
Den Code für "Tabellenblatt bereinigen" habe ich bereits selber definiert.
Private Sub CommandButton1_Click()
Dim i As Long
Dim lbMsg As Byte
'  Application.ScreenUpdating = False
lbMsg = MsgBox("Wollen Sie erledigte Aufgaben wirklich löschen?", vbYesNo, "Warnhinweis")
If lbMsg = vbYes Then
For i = Cells(Rows.Count, 3).End(xlUp).Row To 1 Step -1
If Cells(i, 3) = "erledigt" Then Rows(i).Delete
Next i
End If
'  Application.ScreenUpdating = True
End Sub
Für ersteren Button benötige ich dennoch Hilfe.
Sub Makro3()
Dim letztezeile As Long
letztezeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
Rows(letztezeile + 1).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End Sub
Damit wird nämlich die letzte Zeile von Spalte B gesucht.
Da ich aber 3 Tabellen untereinander habe fügt es mir eine neue Zeile nach der 3. Tabelle, statt nach der 1. Tabelle ein.
VG Berndt
Anzeige
AW: Feedbacke in anderen Beiträgen?
09.09.2016 13:39:17
UweD
Hallo
ungetestet..
Sub neue_Zeile()
Dim EZ As Double
EZ = Evaluate("=MIN(IF(B8:B65536="""",ROW(8:65536)))")
Rows(EZ).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D" & EZ + 1 & ":H" & EZ + 1).FormulaR1C1 = "=SUM(R8C:R[-1]C)"
End Sub

VBA-Zeile einfügen / bestimmte Zeilen löschen
09.09.2016 13:44:30
Berndt
Ganz stark. Funktioniert Klasse.
Nur die obige (Zeile oben drüber) Formatierung hätte ich gern noch integriert. Geht das?
VG Berndt
AW: VBA-Zeile einfügen / bestimmte Zeilen löschen
09.09.2016 13:54:13
UweD
Hallo nochmal
komischerweise wird das Format mitübertragen, wenn ich den Parameter hinten weglasse.
Versuch das mal.

Sub neue_Zeile()
Dim EZ As Double
EZ = Evaluate("=MIN(IF(B8:B65536="""",ROW(8:65536)))")
Rows(EZ).Insert Shift:=xlDown
Range("D" & EZ + 1 & ":H" & EZ + 1).FormulaR1C1 = "=SUM(R8C:R[-1]C)"
End Sub

sonst ergänze das noch so

Sub neue_Zeile()
Dim EZ As Double
EZ = Evaluate("=MIN(IF(B8:B65536="""",ROW(8:65536)))")
Rows(EZ).Insert Shift:=xlDown
Rows(EZ - 1).Copy
Rows(EZ).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
Range("D" & EZ + 1 & ":H" & EZ + 1).FormulaR1C1 = "=SUM(R8C:R[-1]C)"
End Sub
Gruß UweD
Anzeige
AW: VBA-Zeile einfügen / bestimmte Zeilen löschen
09.09.2016 14:02:22
Berndt
Danke UweD.
Ich musste deinen zweiten Vorschlag mit dem ergänzen nehmen.
Jetzt läuft es rund.
Ich habe eben versucht den Code anzupassen, um das selbe Spiel für Problemspeicher und Themenspeicher zu machen. Doch bei diesen 2 Tabellen kann ich nicht einfach einen Zellbezug herstellen, da das ja darauf ankommt wieviele Felder man in der 1.Tabelle eingefügt hat.
AW: VBA-Zeile einfügen / bestimmte Zeilen löschen
09.09.2016 14:34:28
UweD
Z.B. so?

Sub neue_Zeile()
Dim EZ As Double, AB As Double
EZ = UF_neueZeile(8)
Range("D" & EZ + 1 & ":H" & EZ + 1).FormulaR1C1 = "=SUM(R8C:R[-1]C)"
EZ = UF_neueZeile(EZ + 7)
EZ = UF_neueZeile(EZ + 3)
End Sub
Function UF_neueZeile(AB)
Dim EZ As Double
EZ = Evaluate("=MIN(IF(B" & AB & ":B65536="""",ROW(" & AB & ":65536)))")
Rows(EZ).Insert Shift:=xlDown
Rows(EZ - 1).Copy
Rows(EZ).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
UF_neueZeile = EZ
End Function

Anzeige
AW: VBA-Zeile einfügen / bestimmte Zeilen löschen
12.09.2016 07:28:21
Berndt
Dein Vorschlag funktioniert super.
Was brauch es, damit man vorher gefragt wird, wo man eine Zeile eingefügt haben möchte?(Aufgabe, Problem, Themenspeicher)
VG Berndt
AW: VBA-Zeile einfügen / bestimmte Zeilen löschen
12.09.2016 09:26:19
UweD
das könntest du so machen..
Sub neue_Zeile()
    Dim EZ As Double, Ab As Double
    Dim WoEinf As String
    WoEinf = InputBox("(A)ufgabe" & vbLf & "(P)roblem," & vbLf & "(T)hemenspeicher" _
        & vbLf & vbLf, "Wo einfügen?", "A")
    Select Case UCase(WoEinf)
        Case "A"
            EZ = UF_neueZeile(8, True)
            Range("D" & EZ & ":H" & EZ).FormulaR1C1 = "=SUM(R8C:R[-1]C)"
        Case "P"
            EZ = UF_neueZeile(8, False)
            EZ = UF_neueZeile(EZ + 6, True)
            
        Case "T"
            EZ = UF_neueZeile(8, False)
            EZ = UF_neueZeile(EZ + 6, False)
            EZ = UF_neueZeile(EZ + 2, True)
        Case Else
            MsgBox "Ungültig"
    End Select
End Sub
Function UF_neueZeile(Ab, Ja As Boolean)
    Dim EZ As Double
    EZ = Evaluate("=MIN(IF(B" & Ab & ":B65536="""",ROW(" & Ab & ":65536)))")
    If Ja Then
        Rows(EZ).Insert Shift:=xlDown
        Rows(EZ - 1).Copy
        Rows(EZ).PasteSpecial Paste:=xlPasteFormats
        Application.CutCopyMode = False
        EZ = EZ + 1
    End If
    UF_neueZeile = EZ
End Function

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0

Gruß UweD
Anzeige
AW: VBA-Zeile einfügen / bestimmte Zeilen löschen
13.09.2016 14:14:59
Berndt
Vielen Vielen Dank. Auch das funktioniert. Ich teste mal ein bisschen.
VG Berndt
AW: Super Antwort. o.w.T.
09.09.2016 14:18:49
Werner

401 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige