Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Kommentare aus Zwischenablage entfernen
#11
(15.04.2019, 19:30)schauan schrieb: ich mach mal nur etwas Brainstorming.

Hallo, :19:

OK - ich auch. :17:
________
Servus
Case
Antworten Top
#12
Es fehlt die Rückmeldung des Fragestellers, ob z.B. nicht die einfachste Methode von Sabina ausreichen würde, nur die Inhalte einzufügen. Oder auch die Antwort, ob im Zielbereich vor dem Einfügen überhaupt Kommentare vorhanden sind: wenn nicht, dann kann man nach dem Einfügen ja alle Kommentare einfach per VBA löschen lassen.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top
#13
Hallöchen,

ja, da ist immer noch keine Rückmeldung da Sad
Ich hab trotzdem mal mein Brainstorming umgesetzt Smile
Der Code kommt in DieseArbeitsmappe. Min. zwei Probleme dürfte es geben. Zum einen funktioniert es nicht oder nicht 100%ig bei Kopie aus einer anderen Mappe oder Anwendung, zum anderen könnte es Probleme mit größeren Datenmengen geben. Mein Schleifenzähler ist auf Integer dimensioniert, aber auch das könnte schon zuviel des Guten sein … Na ja, und weil aller guter Dinge 3 sind könnte es sein, dass die Ereignismakros gewohnte andere Aktionen stören Sad

Code:
Option Explicit
'Variablendeklaration
Public rng1 As Range, rng2 As Range
Public arrComment

Private Sub Workbook_Open()
'Selectierten Bereich ermitteln
Set rng1 = Selection
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'Makro laeuft nicht bei Workbook_Open
'Kommentare und Bereiche ermitteln
ReadComment
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim rngZellen As Range, iCnt%
'Bei Fehler weiter
On Error Resume Next
'Schleife ueber alle Zellen in denen eingefuegt wurde
For Each rngZellen In Target
  'Schleifenzaehler hochsetzen
  iCnt = iCnt + 1
  'eventuellen Kommentar loeschen
  .Comment.Delete
  'alten Kommentar enfuegen
  rngZellen.AddComment arrComment(iCnt)
  'oder so
  'If Not IsEmpty(arrComment(iCnt)) Is Nothing Then rngZellen.AddComment arrComment(iCnt)
'Ende Schleife ueber alle Zellen in denen eingefuegt wurde
Next
'Selectierten Bereich ermitteln
'Nach dem Einfuegen st ggf. ein groesserer Bereich entsprechend Quelldaten selectiert
Set rng1 = Selection
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'Kommentare und Bereiche ermitteln
ReadComment
End Sub

Private Sub ReadComment()
Dim rngZellen As Range
'Selection merken
Set rng2 = Selection
'Wenn keine vorhergehende Selction vorhanden ist, dann die aktuelle nehmen
'sollte eigentlich nicht passieren, ausser, wenn im Debug-Modus beendet wurde
If rng1 Is Nothing Then Set rng1 = rng2
'Wenn die Bereiche unterschiedlich gross sind, dann
If rng1.Cells.Count <> rng2.Cells.Count Then
  'zweiten Bereich anpassen
  Set rng2 = rng2.Resize(rngZellen.Rows.Count, rngZellen.Columns.Count)
'Ende Wenn die Bereiche unterschiedlich gross sind, dann
End If
'ersten bereich neu setzen
Set rng1 = Selection
'Array anhand Zielzellenzahl redimensionieren
ReDim arrComment(1 To rng2.Cells.Count)
'Schleife ueber alle Zellen
For Each rngZellen In rng2.Cells
  'Schleifenzaehler hochsetzen
  iCnt = iCnt + 1
  'Kommentar uebernehmen, wenn vorhanden
  If Not rngZellen.Comment Is Nothing Then arrComment(iCnt) = rngZellen.Comment.Text
'Ende Schleife ueber alle Zellen
Next
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#14
Hallöchen,

mal noch was zu Inhalte einfügen … Kann man natürlich auch programmieren und wird deutlich kürzer als über die Ereignisse. Im Gegensatz zu den Ereignissen muss man jedoch irgendwo drücken :17: und man kann versehentlich dann doch einfach so kopieren und einfügen. Bei Vorsatz hätte man bei der Ereignislösung das Problem, dass die Kommentare nicht mitkommen. Aber hier könnte man sie über "Inhalte einfügen - Kommentare" reinbekommen, das löst kein Ereignis aus Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#15
(16.04.2019, 09:46)LuckyJoe schrieb: Es fehlt die Rückmeldung des Fragestellers, ob z.B. nicht die einfachste Methode von Sabina ausreichen würde, nur die Inhalte einzufügen. Oder auch die Antwort, ob im Zielbereich vor dem Einfügen überhaupt Kommentare vorhanden sind: wenn nicht, dann kann man nach dem Einfügen ja alle Kommentare einfach per VBA löschen lassen.

Ich bin sehr positiv überrascht über so viel Feedback - lieben Dank!!!

Also:
1) Die Zwischenablage soll defintiv mit den Tastaturkürzeln angesteuert werden, ohne rechte Maustaste-Menü... das ist zu kompliziert auf Dauer.
2) Der Zielbereich ist in der Regel unkommentiert - und soll dies auch bleiben bzw. wenn bereits ein Kommentar vorhanden ist (wird sehr selten vorkommen, aber kann passieren), soll dieser ersetzt (nicht ergänzt!) werden durch aktuelles Datum und Uhrzeit.

Aktuell wird ein Makro genutzt, das automatisch in die erste Spalte bei Ausfüllen einen Datum- und Zeitstempel setzt:

'Automatisches Einfügen eines Kommentar in Spalte A bei Ändern des Zellinhalts
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, Columns("A:A")) Is Nothing And Target.Count = 1 Then
      With Target
         If .Comment Is Nothing Then
            .AddComment.Text Application.UserName & Chr(10) & Date & " " & Format(Time, "hh:mm")
         Else
            .Comment.Text .Comment.Text & Chr(10) _
                  & Application.UserName & Chr(10) & Date & " " & Format(Time, "hh:mm")
         End If
      End With
   End If
End Sub


Da jedoch auch mal ganze Zeilen oder auch einzelne kommentierte Zellen kopiert werden, ist es wichtig, dass wie oben beschrieben, dass das Kommentarfeld Datum und Uhrzeit des aktuellen Tages anzeigen.

Hilft Euch das ein wenig?!

Danke nochmals!
Antworten Top
#16
Hallo,

widerspricht sich das nicht? Du schreibst zunächst:
Zitat:... wenn bereits ein Kommentar vorhanden ist (...), soll dieser ersetzt (nicht ergänzt!) werden...

... aber in dem vorgestellten Makro wird ein vorhandener Kommentar ergänzt, nicht ersetzt.
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top
#17
Hallo,

die ganze Anforderung widerspricht sich ...

Zitat aus Originalpost:

Zitat:Wichtig ist mir dabei natürlich, dass die bereits vorhandenen Kommentare in der Tabelle nicht gelöscht werden.


Und jetzt sollen die ersetzt werden durch Datum und Uhrzeit ... also die eigentliche Info der Kommentare wird damit sehr wohl gelöscht.
Ich finde der TE sollte erst mal genau wissen, was er will.

Wenn ich in einen Kommentar nur Datum und Uhrzeit schreibe, die aber schon in der Spalte A eingefügt ist ... brauche ich dann den Kommentar ? ... meiner Meinung nach ... NEIN. Datum und Uhrzeit ist für mich, in diesem Zusammenhang, kein sinnvoller Kommentar.
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Antworten Top
#18
Danke für Eure Antworten.

Im Prinzip geht es darum, dass derjenige, der einen neuen Eintrag in Spalte A macht, gleichzeitig einen Kommentar hinterlässt. So kann im Nachgang nachgefprüft werden, WER diesen Eintrag vorgenommen, und WANN. So weit, so gut: dies erledigt das Makro.

Wenn nun in einem späteren Schritt jemand eine auskommentiere Zelle kopiert, um damit einen "neuen" Eintrag in der Tabelle zu hinterlassen, steht jedoch noch der Kommentar und damit auch auch der Name und die Zeit desjenigen in der Zelle, der die urpsüngliche und jetzt kopierte Zelle bearbeitet hat.

Entschuldigung, dass ich mich missverständlich ausgedrückt habe.

Daher war die Idee das gepostete Makro weiterhin zu nutzen und die Kommentare irgendwie von der Zwischenablage unberührt zu lassen, d.h. nicht mit zu kopieren bzw. nicht mit einzufügen.

Für andere Lösungen bin ich selbstverständlich auch offen. Ich verfüge leider nicht über das umfassende Wissen, um zu beurteilen, ob ich überhaupt mit dem Makro auf der richtigen Spur bin, oder ob es für den beschriebenen Einsatzzweck eine geschickerte Lösung gibt.
Antworten Top
#19
Hallo,

irgendwie ... entweder hab ich ein paar Posts nicht gelesen ... hab ich noch immer nicht gefunden, was du alles kopieren willst ... Kommentare nicht ... ist OK.

Was willst du kopieren ?
- Werte
- Formate
- bed. Formate
- Rahmen
- sonstwas ...

PS: das Einfügen über Strg+V entfällt auf jeden Fall ... das startet kein Makro, dass dir die Kommentare löscht. Bzw. Excel kann das Einfügen von Daten nicht von einer normalen Änderung einer Zelle unterscheiden und würde dann das Makro trotzdem starten und eventuell einen "unschuldigen" Kommentar killen.
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Antworten Top
#20
Hallöchen,

ein vorhandener Kommentar wird nicht ergänzt Sad

Ein vorhandener Kommentar wird mit dem geposteten Makro beim Einfügen durch den Kommentar der eingefügten Zelle überschrieben und dieser Kommentar wird dann ergänzt.
Ist kein Kommentar vorhanden, wird nur ein neuer gesetzt.
Wird die Zelle neu beschrieben, wird ein vorhandener Kommentar ergänzt oder, falls keiner drin ist, ein neuer eingefügt.

Das widerspricht doch den Anforderungen aus der Aufgabenstellung ? Sad
Zitat:Mir ist es ein Anliegen, dass die darin enthaltenen Kommentare nicht mit kopiert werden.
Wichtig ist mir dabei natürlich, dass die bereits vorhandenen Kommentare in der Tabelle nicht gelöscht werden.
Das tangiert im Prinzip das, was ich in meinem Brainstorming angemerkt und nachfolgendem Code umgesetzt hatte - man muss sich vor dem Einfügen merken, was da so an Kommentaren drin ist.
In meinen Makros werden übrigens auch mehrzellige Bereiche berücksichtigt ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste