Registriert seit: 24.09.2018
Version(en): Office 365
28.11.2023, 10:40
Hallo werte Excel-Gemeinde,
ich wende mich erneut mit einem Problem an Euch.
Ich habe in einem Bereich
J9:OP24 Kommentare stehen. Mittels SpinButton möchte ich die Kommentare der markierten Zelle für den gesamten Zeilenbereich entweder eine Zeile hoch oder runter verschieben (SpinDown/ SpinUp).
Krux an der Sache, es sollen ausschließlich die Kommentare und nicht die Zellinhalte und auch nicht die Formatierung verschoben werden.
Das ganze über VBA.
Ich hoffe, dass ihr mir irgendwie helfen könnt und freue mich auf Euren Input
!
Viele Grüße!
MüMa0806
26865
Nicht registrierter Gast
Ohne Versionsangabe sehe ich "Kommentare" als die Legacy-Kommentare an, ab 365 "Notiz" genannt
Einfügen/Inhalte/Kommentare ist die passende Methode.
Beispiel für eine Zeile nach unten verschieben:
Code:
Option Explicit
Sub KommentarVerschieben1NachUnten()
Dim rngToMove As Range, c As Range
Set rngToMove = Selection '(oder was auch immer!)
Call rngToMove.Copy
Call rngToMove.Offset(1).PasteSpecial(Paste:=xlPasteComments)
For Each c In rngToMove
If Not c.Comment Is Nothing Then Call c.Comment.Delete
Next c
Application.CutCopyMode = False
End Sub
Spinbutton und sonstigen Schnickschnack drumherum schaffst du sicher alleine.
Registriert seit: 24.09.2018
Version(en): Office 365
Hallo EarlFred,
der Ansatz ist gut und ja, dass mit den SpinButton bekomme ich hin.
Allerdings sollen die Kommentare verschoben und nicht kopiert werden.
Vielleicht hast du ja noch eine Idee...
Ach und pardon: ich verwende das Excel von Office365.
Viele Grüße!
26865
Nicht registrierter Gast
(28.11.2023, 14:04)MuMa0806 schrieb: Allerdings sollen die Kommentare verschoben und nicht kopiert werden.
Erklär mir den Unterschied.
Registriert seit: 12.03.2016
Version(en): Excel 2003
Hallo
nach meiner Ansicht sollte es mit diesem "abgeguckten" und geändertem Code der Kollegen gehen.
Frage: sthen in der Zelle drüber/drunter keine Kommentare?? Soll da nichts verschoben werden??
mfg Gast 123
Code:
Sub test()
'x= +1, -1 für Up, Down Richtung
Selection.Copy
Selection.Offset(x, 0).PasteSpecial Paste:=xlPasteComments
Selection.Comment.Delete
End Sub
Registriert seit: 24.09.2018
Version(en): Office 365
(28.11.2023, 14:06)EarlFred schrieb: Erklär mir den Unterschied.
Im gesamten Bereich sind Kommentare/ Notizen niedergeschrieben.
Beispielsweise in J9 und J10 steht jeweils ein Kommentar. Beim verschieben, sollen die quasi vertauscht werden, also der Kommentar aus J9 geht nach J10 und andersherum.
Ich hoffe, es heilwegs vernünftig erklärt zu haben?!
26865
Nicht registrierter Gast
(28.11.2023, 14:17)Gast 123 schrieb: nach meiner Ansicht sollte es mit diesem "abgeguckten" und geändertem Code der Kollegen gehen.
Kannst du das auch bei einem Bereich mit mehr als einer Zelle bestätigen? Klappt in meiner Version nicht.
Das Selection-Object wurde hier hilfsweise genutzt und ist durch den korrekten Bereich zu ersetzen - selbstredend.
(28.11.2023, 14:18)MuMa0806 schrieb: Beispielsweise in J9 und J10 steht jeweils ein Kommentar. Beim verschieben, sollen die quasi vertauscht werden, also der Kommentar aus J9 geht nach J10 und andersherum.
Dann musst du die Kommentare der ersten oder letzten Zeile zwischenspeichern und nach dem Kopiervorgang der restlichen Kommentare an der passenden Stelle einfügen. Sinngemäß würde ich das auch so machen, wenn ich nicht die Copy-Methode nutzen würde.
Registriert seit: 24.09.2018
Version(en): Office 365
(28.11.2023, 14:17)Gast 123 schrieb: Hallo
nach meiner Ansicht sollte es mit diesem "abgeguckten" und geändertem Code der Kollegen gehen.
Frage: sthen in der Zelle drüber/drunter keine Kommentare?? Soll da nichts verschoben werden??
Ja, in den Zellen darüber und auch darunter stehen mitunter weitere Kommentare. Diese sollen weder überschrieben noch gelöscht werden. Die zeilen sollen quasi wechseln.
Registriert seit: 12.03.2016
Version(en): Excel 2003
28.11.2023, 23:04
(Dieser Beitrag wurde zuletzt bearbeitet: 28.11.2023, 23:09 von Gast 123.)
Hallo
hmmm, weil ich diese Aufgabenstellung noch nie hatte, habe ich eine Weile daran geknabbert. Hier meine Lösung.
Ich habe dabei berücksichtigt, das nicht in jeder Zelle drüber oder drunter ein Kommentar sein muss, aber kann.
Ich bin gespannt wie der Code bei dir funktioniert?
(snb hat dafür sicher wieder einen Einzeiler) schmunzel ....mfg Gast 123
Code:
Sub Kommentare_verschieben()
Dim KomText1, KomText2, KomText3
Dim Adr As String, VSZ As Integer
VSZ = 1 'Verschiebe Zahl -1/1 (oben/unten)
If Not Selection.Comment Is Nothing And _
Not Selection.Offset(VSZ, 0).Comment Is Nothing Then
KomText1 = Selection.Comment.Text
KomText2 = Selection.Offset(VSZ, 0).Comment.Text
Selection.Offset(VSZ, 0).Comment.Text Text:=KomText1
Selection.Comment.Text Text:=KomText2
Exit Sub
End If
If Selection.Offset(VSZ, 0).Comment Is Nothing Then
Selection.Copy
Selection.Offset(VSZ, 0).PasteSpecial xlPasteComments
Application.CutCopyMode = False
Selection.ClearComments
End If
End Sub
Nachtrag: VSZ = Verschiebezahl +1/-1 = Offset(VSZ,0) für obere Zeile oder untere Zeile. Die musst du bitte selbst erstellen.
Registriert seit: 29.09.2015
Version(en): 2030,5
29.11.2023, 13:10
(Dieser Beitrag wurde zuletzt bearbeitet: 29.11.2023, 13:10 von snb.)
Du schreibst: 'verschieben', du meinst 'verwechseln', 'austauschen'.
Code:
Sub M_snb()
y = -1
For Each it In Intersect(Selection.EntireRow, Range("J9:OP14")).SpecialCells(-4144)
c00 = it.Offset(y).Comment.Text
it.Offset(y).Comment.Text it.Comment.Text
it.Comment.Text c00
Next
End Sub