• 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 Cel automatisch plaatsen

Status
Niet open voor verdere reacties.

vinemaster

Gebruiker
Lid geworden
23 mei 2012
Berichten
41
Is het mogelijk om in excel een opmerking Automatisch aan een cel toe te voegen?

Simpel gezegd, als voorbeeld, wil ik de gegevens van Kolom B als opmerking toevoegen aan Kolom A.
Kolom A zou dan een ordernummer bevatten en kolom B de status van de order.
Dit lijkt misschien nutteloos, maar het doel is om het excel gebruiksvriendelijker / overzichtelijker te maken voor alle gebruikers.
Het document, waar meerdere gebruikers in werken, bevat meer dan 30 kolommen en iedereen heeft hier andere informatie uit nodig.

Een andere optie dat ik overweeg is om de gebruiker te laten selecteren wat voor functie hij/zij heeft.
Ik kan het excel dan automatisch een aantal kolommen laten verplaatsen en/of verbergen.
Ik ben dan alleen bang dat gebruikers een visuele aanpassing opslaan, waardoor andere in de war raken.

Een derde optie waar ik naar heb zitten kijken is een combinatie van een reguliere keuzelijst en een keuzelijst met invoervak.
Een keuzelijst is namelijk fijn, want het is klein en het verbergt de overige opties
Een keuzelijst met invoervak geeft de optie om meerdere opties te selecteren, maar alle opties, ook de niet geselecteerde, blijven in beeld staan waardoor het heel groot wordt.
Mijn voorkeur heeft een keuzelijst met invoervak, die gewoon weer in elkaar schuift en klein blijft. Maar bestaat dat?

Het zijn eigenlijk meerdere vragen, maar als 1 van de vragen positief beantwoord kan worden, dan ben ik blij.
 
Opmerking invoegen. Plaats de code in het juiste tabblad in VBA.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B1")) Is Nothing Then
    If Not Range("A1").Comment Is Nothing Then Range("A1").Comment.Delete
Else: Exit Sub
End If
    With Range("A1")
        .AddComment
        .Comment.Visible = False
        .Comment.Text Text:=Range("B1").Value
    End With
End Sub

De keuzelijst die je wil kan met gegevensvalidatie gerealiseerd worden.
 
Laatst bewerkt:
Bedankt, naar gegevensvalidatie had ik al gekeken, maar ik kwam er niet helemaal uit.
Ik zal daar zelf nog wel even dieper induiken, als het nodig blijkt.

De VBA optie ga ik gelijk even testen, maar je klinkt zo overtuigend dat het vast werkt!

Toppers!
 
Klein beetje aangepast zodat de macro niet steeds onnodig wordt geactiveerd.
 
Toch nog een vervolgvraag:

de macro kijkt nu alleen naar Cel A1 en vult daar B1 in, maar ik zou het graag voor de gehele kolom willen.
B1 --> A1
B2 --> A2
B3 --> A3

Zou ik dan een 'for each next loopje' moeten gebruiken, of zijn daar betere alternatieven voor?


Zonder loop heb ik dit nu:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("AF2:AJ150")) Is Nothing Then
    If Not Range("AK2").Comment Is Nothing Then Range("AK2").Comment.Delete
Else: Exit Sub
End If
    With Range("AK2")
        .AddComment
        .Comment.Visible = False
        .Comment.Text Text:=Range("AF2").Value & Chr(10) & Range("AG2").Value & Chr(10) & Range("AH2").Value & Chr(10) & Range("AI2").Value & Chr(10) & Range("AJ2").Value
    End With
End Sub
 
Laatst bewerkt:
wil je dat het commentaar alleen bijgewerkt wordt als er een wijziging is ? dan kun je via de target werken en heb je geen loopje nodig
of wil je dat steeds allen commentaren ververst wordt?
 
Laatst bewerkt:
Zo dan? Ik heb wel weer even me eigen vb gebruikt

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1:B" & Range("B1").End(xlDown).Row)) Is Nothing Then
    If Not Target.Offset(, -1).Comment Is Nothing Then Target.Offset(, -1).Comment.Delete
Else: Exit Sub
End If
    With Target.Offset(, -1)
        .AddComment
        .Comment.Visible = False
        .Comment.Text Text:=Target.Value
    End With
End Sub
 

Bijlagen

Laatst bewerkt:
Zo dan? Ik heb wel weer even me eigen vb gebruikt

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1:B" & Range("B1").End(xlDown).Row)) Is Nothing Then
    If Not Target.Offset(, -1).Comment Is Nothing Then Target.Offset(, -1).Comment.Delete
Else: Exit Sub
End If
    With Target.Offset(, -1)
        .AddComment
        .Comment.Visible = False
        .Comment.Text Text:=Target.Value
    End With
End Sub

Thanks, dat is inderdaad het makkelijkst. Ik kijk even of ik hem kan aanpassen voor mijn documentatie.
 
voor veranderingen in kolom B noottext in kolom A
werkt ook als er meerder veranderingen in kolom B zijn bv door een gebied te deleten
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim R As Range
For Each R In Intersect(Target, [b:b])
    R.Offset(, -1).NoteText R.Value
Next
End Sub
 

Bijlagen

Laatst bewerkt:
Meerdere kolommen maken het ingewikkeld

Wat werkt tot nu toe:
- indien ik een cel uit de eerste kolom wijzig, dan krijgt de volledige comment een update.
- de code werkt op de gehele kolom en niet alleen op de eerste cel

Code:
.Comment.Text Text:=Range("AF2").Value & Chr(10) & Range("AG2").Value & Chr(10) & Range("AH2").Value & Chr(10) & Range("AI2").Value & Chr(10) & Range("AJ2").Value

Zoals te zien in mijn eerdere post en hierboven gebruik ik 5 kolommen als input voor de comments, dat maakt het dus lastig.
Bij voorkeur wil ik namelijk dat een comment in kolom AK wordt aangepast bij elke wijzigingen in kolom AF t/m AK.

Met de huidige opties wordt een comment alleen aangepast als ik een cel uit de eerste kolom wijziging.
Sterker nog, er wordt een comment in een andere kolom geplaatst, als er een cel in een andere kolom gewijzigd wordt dan de eerste.

Ik ben zelf ook nog aan het puzzelen, dus als ik er uit ben, dan stuur ik een update.
 
misschien zo iets?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [Af2:AJ2]) Is Nothing Then [A2].NoteText Range("AF2").Value & Chr(10) & Range("AG2").Value & Chr(10) & Range("AH2").Value & Chr(10) & Range("AI2").Value & Chr(10) & Range("AJ2").Value
End Sub
 

Bijlagen

misschien zo iets?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [Af2:AJ2]) Is Nothing Then [A2].NoteText Range("AF2").Value & Chr(10) & Range("AG2").Value & Chr(10) & Range("AH2").Value & Chr(10) & Range("AI2").Value & Chr(10) & Range("AJ2").Value
End Sub

De code zorgt er inderdaad voor dat elke wijziging in range AF2:AJ2 wordt overgenomen in de comment van A2, dat was nog niet gelukt.
Maar deze code kijkt weer niet naar de gehele kolom, maar slechts naar rij 2. Het moet op Range("A2:B" & Range("A1").End(xlDown).Row) van toepassing zijn.

Ik moet dus uitzoeken hoe ik bovenstaande opties op de juiste wijze samenvoeg.
 
of
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
a = [Af2:AJ2]
If Not Intersect(Target, [Af2:AJ2]) Is Nothing Then [A2].NoteText Join(Application.Index(a, 1, 0), Chr(10))
End Sub
 
voeg eens een bestandje toe

wat moet er in de noottext van kolom b komen?
 
Laatst bewerkt:
misschien zo iets?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim R1 As Range, Rij As Long, Rr
Set R1 = Intersect(Target, [AF:AJ])
If R1 Is Nothing Then Exit Sub
For Rij = 1 To R1.Rows.Count
    Rr = Intersect(R1(Rij).EntireRow, [AF:AJ])
    Cells(R1(Rij).Row, 1).NoteText Join(Application.Index(Rr, 1, 0), Chr(10))
Next
End Sub
 

Bijlagen

Laatst bewerkt:
verbeterd: (ik wist niet dat er een kolomwaarde nodig is ik dacht dat het optioneel was)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim R1 As Range, Rij As Long, Rr
Set R1 = Intersect(Target, [AF:AJ])
If R1 Is Nothing Then Exit Sub
For Rij = 1 To R1.Rows.Count
    Rr = Intersect(R1(Rij,[COLOR="#FF0000"] 1[/COLOR]).EntireRow, [AF:AJ])
    Cells(R1(Rij, [COLOR="#FF0000"]1[/COLOR]).Row, 1).NoteText Join(Application.Index(Rr, 1, 0), Chr(10))
Next
End Sub
 

Bijlagen

Laatst bewerkt:
1000 maal dank

Volgens mij is dit precies zoals ik het nodig heb.
U bent een held!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan