Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1748to1752
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
Inhaltsverzeichnis

Kontextmenüeintrag "Zeile löschen"

Kontextmenüeintrag "Zeile löschen"
27.03.2020 08:44:50
Peer
Hallo.
Ich habe einen Kontextmenü in meiner Mappe mit zwei Einträgen.
Beim ersten Eintrag öffnet ein UF und der zweite Eintrag soll in der aktiven Zeile den Inhalt löschen.
Ich habe mal eine Beispielmappe rein gestellt.
Achtung. Das Schließen der Mappe funktioniert nur über den Reiter "Erfassungsbeleg".
https://www.herber.de/bbs/user/136146.xlsm
Und hier der Code...

Public Sub CreateCommandBar()
Dim objCommandBar As CommandBar
Dim objCommandBarButton As CommandBarButton
Dim objCommandBarButton2 As CommandBarButton
Call DeleteCommandBar
Set objCommandBar = Application.CommandBars.Add(Name:=KONTEXTMENU_NAME, _
Position:=msoBarPopup, Temporary:=True)
Set objCommandBarButton = objCommandBar.Controls.Add(msoControlButton, , 1)
Set objCommandBarButton2 = objCommandBar.Controls.Add(msoControlButton, , 2)
With objCommandBarButton
.Caption = "Arbeitstag öffnen"
.FaceId = 9146
.Style = msoButtonIconAndCaption
.OnAction = "ShowDay"
End With
With objCommandBarButton2
.Caption = "Zeile löschen"
.FaceId = 47
.Style = msoButtonIconAndCaption
'was schreibe ich hier für .OnAction rein?
End With
End Sub

Ich denke hier evetuell an einen "mso..." Befehl von Excel.
Vielleicht kann jemand mir auf die Sprünge helfen.
Vielen Dank im Voraus.
LG
Peer

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

Betreff
Datum
Anwender
Anzeige
AW: Kontextmenüeintrag "Zeile löschen"
27.03.2020 11:15:05
Nepumuk
Hallo Peer,
was nun? Zeile löschen oder nur Inhalte entfernen?
Gruß
Nepumuk
AW: Kontextmenüeintrag "Zeile löschen"
27.03.2020 11:39:36
Peer
Hallo Nepumuk.
Entschuldige, ich vergaß zu erwähnen, dass ich nur den Inhalt (ohne Formatierungen und Formeln) löschen möchte. Die Zellen mit den Formeln habe ich gesperrt, damit sie nicht angesprochen werden.
LG
Peer
AW: Kontextmenüeintrag "Zeile löschen"
27.03.2020 14:24:54
Nepumuk
Hallo Peer,
dann musst du eine Prozedur aufrufen welche die Inhalte löscht. (ClearContents)
Gruß
Nepumuk
AW: Kontextmenüeintrag "Zeile löschen"
27.03.2020 16:57:26
Peer
Hallo Nepumuk.
Das war auch mein Gedanke. ClearContents löscht aber auch die Formeln bei gesperrten Zellen, oder?
Oder gibt es eine andere Lösung?
Und wenn ja, wie?
LG
Peer
Anzeige
AW: Kontextmenüeintrag "Zeile löschen"
27.03.2020 17:26:01
Nepumuk
Hallo Peer,
so werden nur Inhalte gelöscht:
Public Sub Test()
    Dim lngColumn As Long
    For lngColumn = 1 To Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Column
        If Not Cells(ActiveCell.Row, lngColumn).HasFormula Then _
            Call Cells(ActiveCell.Row, lngColumn).ClearContents
    Next
End Sub

Gruß
Nepumuk
Anzeige
AW: Kontextmenüeintrag "Zeile löschen"
27.03.2020 19:30:08
Peer
Hallo Nepumuk.
Was die Info doch falsch. Danke.
Ich hab ein meinem Projekt noch das Problem, dass die Spalten N12:O42 verbunden Zellen haben und dann der Debugger dies bemängelt.
Für mich wäre es jetzt ne Menge Arbeit, diese Verbindungen händisch umzustellen. Deshalb suche ich noch eine Lösung, dieses im Code unterzubringen.
Dabei habe ich den Code ein wenig angepasst wollen, was mir nicht ganz gelingt.
Als erstes habe ich geglaubt

Sub aktiveZeile_loeschen()
Dim lngColumn As Long
ActiveSheet.Unprotect
Columns(ActiveCell.Row, 14).UnMerge
For lngColumn = 4 To Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Column
If Not Cells(ActiveCell.Row, lngColumn).HasFormula Then
'call cells(activecell.Row, "N:O").mergecells=false
Call Cells(ActiveCell.Row, lngColumn).ClearContents
End If
Next
ActiveSheet.Protect
End Sub
würde die Verbindung erstmal lösen.
Später wollte ich vor Aktivieren des Blattschutzes beide Spalten im Range N12:O42 wieder einzeln verbinden, um den Ursprung herzustellen.
Aber es will mir nicht gelingen.
Wie kann es richtig lauten oder wie muss ich vorgehen?
LG
Peer
Anzeige
AW: Kontextmenüeintrag "Zeile löschen"
27.03.2020 19:52:02
Nepumuk
Hallo Peer,
teste mal:
Public Sub Test()
    Dim lngColumn As Long
    For lngColumn = 1 To Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Column
        If Not Cells(ActiveCell.Row, lngColumn).HasFormula Then
            If Cells(ActiveCell.Row, lngColumn).MergeCells Then
                Cells(ActiveCell.Row, lngColumn).MergeArea.ClearContents
            Else
                Call Cells(ActiveCell.Row, lngColumn).ClearContents
            End If
        End If
    Next
End Sub

Gruß
Nepumuk
Anzeige
AW: Kontextmenüeintrag "Zeile löschen"
27.03.2020 19:57:00
Peer
Hallo Nepumuk.
Ich war nicht untätig und habe inzwischen mal diese Variante probiert

Sub aktiveZeile_loeschen()
Dim lngColumn As Long
ActiveSheet.Unprotect
For lngColumn = 4 To Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Column
If Not Cells(ActiveCell.Row, lngColumn).HasFormula Then
Call Cells(ActiveCell.Row, 14).UnMerge
Call Cells(ActiveCell.Row, lngColumn).ClearContents
'Call Cells(ActiveCell.Row, 14
End If
Next
ActiveSheet.Protect
End Sub

Das funktioniert auch soweit, aber wie bekomme ich die Spalten N und O der jeweiligen Zeile wieder zusammen?
Sei bitte nicht böse, wenn ich erstmal MEINE Idee verwende (aus Lernaspekten heraus).
Gruß
Peer
Anzeige
AW: Kontextmenüeintrag "Zeile löschen"
27.03.2020 20:20:34
Peer
Hallo Nepumuk.
Cells(ActiveCell.Row, 14).Offset.Resize(0, 1).MergeCells = True

?
Wenn ich über Offset.Resize mit der Maus gehe, zeigt er mir aber genau die Spalten N:O an.
LG
Peer
AW: Kontextmenüeintrag "Zeile löschen"
28.03.2020 09:25:08
Peer
Hallo Nepumuk.
Dank nochmals für deine Hilfe.
Ich habe deinen Code verwendet und er funktioniert super.
An MergeArea hatte ich nicht gedacht.
LG
Peer
AW: Kontextmenüeintrag "Zeile löschen"
27.03.2020 17:26:04
Nepumuk
Hallo Peer,
so werden nur Inhalte gelöscht:
Public Sub Test()
    Dim lngColumn As Long
    For lngColumn = 1 To Cells(ActiveCell.Row, Columns.Count).End(xlToLeft).Column
        If Not Cells(ActiveCell.Row, lngColumn).HasFormula Then _
            Call Cells(ActiveCell.Row, lngColumn).ClearContents
    Next
End Sub

Gruß
Nepumuk
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige