• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Opmerking in een cel, vullen met inhoud uit een cel

Status
Niet open voor verdere reacties.

Knooier

Nieuwe gebruiker
Lid geworden
11 jan 2025
Berichten
1
Besturingssysteem
Windows 11
Office versie
Pro Plus 2021
Ik zoek een manier om de opmerking (dat rode driehoekje) in een cel te vullen met de tekst uit een andere cel zonder dit handmatig te moeten doen.
Is dat uberhaupt mogelijk?

Mvrgr,
Harry
 
Tegenwoordig in Office 365 worden die NoteText genoemd i.p.v. Comment.
Maar het rode driehoekje is gebleven.

Met onderstaande code wordt de comment in blad1!A1 gevuld met de tekst van Blad2!A1.
Code:
sub hsv
 sheets(1).range("a1").NoteText sheets(2).range("a1")
end sub
 
Dit is de code die ik standaard gebruik!


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
        With Me.Range("C2")
            .ClearComments
            .AddComment Target.Value
            .Comment.Shape.TextFrame.AutoSize = True
        End With
    End If
End Sub

Plaats deze in worksheet en niet in module.

Voor plaatsing op een ander blad.
tweede versie aangepast naar voorbeeld van Edmoor

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0,0) = "A1" Then
        With ThisWorkbook.Sheets("Blad2").Range("C2")
            .ClearComments
            .AddComment Target.Value
            .Comment.Shape.TextFrame.AutoSize = True
        End With
    End If
End Sub


Elke keer dat een wijziging wordt aangebracht in cel A1 op het werkblad, wordt de Worksheet_Change gebeurtenisprocedure geactiveerd. De code controleert of de wijziging plaatsvond in cel A1. Als dat het geval is, wordt de bestaande opmerking in cel C2 verwijderd en vervangen door een nieuwe opmerking met de nieuwe waarde van cel A1. De opmerking wordt automatisch aangepast aan de grootte van de tekst, zodat deze altijd volledig zichtbaar is.
 
Laatst bewerkt:
Het gebruik van Intersect is daar overbodig:
Code:
If Target.Address(0,0) = "A1" Then
 
Ook het gebruik van 'Me' in een werkblad-event is overbodig.
 
Ook het gebruik van 'Me' in een werkblad-event is overbodig.

Maar je moet toch weten op welk blad je zit?
De oplossing van Edmoor begrijp ik
alleen Me.Range vervangen door .Range zie ik niet.
Wil je mij de hele macro geven?
 
Waar de Change-Event staat is 'Me.'
Net als die 'Thisworkbook' je blijft zonder al in hetzelfde werkboek..

Zonder steeds de comment te verwijderen kan het zo.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
   If .Address(0, 0) = "A1" Then
     If .Comment Is Nothing Then .AddComment
        .Comment.Text Sheets("blad2").Range("a1").Text
    End If
End With
End Sub
 
Laatst bewerkt:
Ik heb 2 macro's neergezet

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
        With Me.Range("C2")
            .ClearComments
            .AddComment Target.Value
            .Comment.Shape.TextFrame.AutoSize = True
        End With
    End If
End Sub
en de tweede met aanpassing Edmoor.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0,0) = "A1" Then
        With ThisWorkbook.Sheets("Blad2").Range("C2")
            .ClearComments
            .AddComment Target.Value
            .Comment.Shape.TextFrame.AutoSize = True
        End With
    End If
End Sub

Waar kan nu 'Me.' gewoon weg en hoe?

Deze , van HSV, zet bij mij de tekst uit blad1 "A1" als commentaar in blad1 "A1" en niet op blad2

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
   If .Address(0, 0) = "A1" Then
     If .Comment Is Nothing Then .AddComment
        .Comment.Text Sheets("blad2").Range("a1").Text
    End If
End With
End Sub
 
Deze zet een comment in de cel van target met de tekst van blad2A1., maar is ook niet zo interessant hoor voor de vraag.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
   If .Address(0, 0) = "A1" Then
     If .Comment Is Nothing Then .AddComment
        .Comment.Text Sheets("blad2").Range("a1").Text
    End If
End With
End Sub

In de code van.....
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
        With Me.Range("C2")
            .ClearComments
            .AddComment Target.Value
            .Comment.Shape.TextFrame.AutoSize = True
        End With
    End If
End Sub
....kan je Me. weghalen toch?

En in onderstaande code kun je 'ThisWorkbook.' weglaten.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0,0) = "A1" Then
        With ThisWorkbook.Sheets("Blad2").Range("C2")
            .ClearComments
            .AddComment Target.Value
            .Comment.Shape.TextFrame.AutoSize = True
        End With
    End If
End Sub
Je blijft immers met de Change-event in hetzelfde werkbook (ThisWorkbook).
Maar je mag het ook laten staan hoor, het is maar een suggestie,
 
Heb je zelf alles gecontroleerd op werking???
En heb je mijn vorige bericht goed gelezen???


want 'Me.' weglaten werkt onder office 2016 en 2021 niet.

Onder 2016 en 2021

Deze , van HSV, zet bij mij de tekst uit blad1 "A1" als commentaar in blad1 "A1" en niet op blad2

Code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
   If .Address(0, 0) = "A1" Then
     If .Comment Is Nothing Then .AddComment
        .Comment.Text Sheets("blad2").Range("a1").Text
    End If
End With
End Sub
 
Ik denk dat je iets verkeerd doet.
 
Het zou een verschil kunnen zijn tussen office 365 en de oudere versies
want ik kan echt wel knippen en plakken.

Heb jij ook oudere (meerdere) versies draaien?


de 2 versies die ik geplaatst heb werken onder office 2016 en onder 2021
en gebruik ik al jaren
 

Bijlagen

Laatst bewerkt:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
   If .Address(0, 0) = "A1" Then
     If .Comment Is Nothing Then .AddComment
        .Comment.Text Sheets("blad2").Range("a1").Text
    End If
End With
End Sub
Wat deze code doet is bij wijziging in Blad1!A1 de commentaartekst die moet geplaats worden in Blad1!A1 gaan halen in Blad2!A1

Trouwens die Me weglaten bij Eventcode die verwijst naar de Parentsheet bestaat al sinds ik werk met VBA.(en dat is al zéér lang)
 
  • Leuk
Waarderingen: HSV
Heb je het gecontroleerd onder andere versies want het werkt gewoon
NIET onder 2016 en NIET onder 2021.
 
Ik heb de versies 2000, 2003, 2007 gehad en sinds 2022 office 365.
De codes werkten in alle versies, dus lijkt me stug dat het niet werkt in jouw versies.

Maar goed, ik kan het niet testen, maar test hetzelf maar eens.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        With Range("C2")
            .ClearComments
            .AddComment Target.Value
            .Comment.Shape.TextFrame.AutoSize = True
        End With
    End If
End Sub
Overigens dwalen we af volgens mij voor de vraag.
 
Laatst bewerkt:
Dit achter Blad1 doet het hier prima in Office 2021.
Wat in Bllad1!A1 wordt ingevuld komt als commentaar in Blad2!C2 te staan:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0,0) = "A1" Then
        With Sheets("Blad2").Range("C2")
            .ClearComments
            .AddComment Target.Value
            .Comment.Shape.TextFrame.AutoSize = True
        End With
    End If
End Sub
 
Overigens dwalen we af volgens mij voor de vraag.
TS weet niet wat hem te wachten staat en ziet, aanname, door het bos de bomen niet meer. Of was het anders om? Of, bosbrand op zee?
 
TS zal zien dat er in ieder geval op z'n vraag wordt gereageerd :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan