• 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.

weg schrijven naar juiste regel

Status
Niet open voor verdere reacties.

popipipo

Meubilair
Lid geworden
21 nov 2006
Berichten
9.089
Besturingssysteem
Win11
Office versie
Office 365
Ik schrijf via VBA extra gegevens in een blad door het aanklikken van een naam in dezelfde regel

Als ik echter een naam aanklik 20 regels lager dan schrijft hij het toch weer weg in de hierboven genoemd bereik.
Ik dacht dit zo op te lossen:
verander dit:
Code:
Range("H4").Value = strCmt
in dit:
Code:
Range("H" & Row().Select).Value = strCmt
Dit werkt echter niet. Hoe moet het wel??
 

Bijlagen

Als het goed is dit:

Code:
Cells(ActiveCell.Row(), 8).Value = strCmt

Niels
 
Als het goed is dit:

Helaas is het (net) niet goed. :( :p
en net niet goed is eigenlijk helemaal fout. :p :(

Het wordt wel weggeschreven naar de juiste cel.
Echter de gegevens blijven staan als je een ander cel aanklikt en dat is nou net niet de bedoeling.
Dan had ik net zo goed de functie vertikaal zoeken kunnen gebruiken.
 
Heb je hier iets aan?
Code:
Private Sub Worksheet_[COLOR="red"][B]Change[/B][/COLOR](ByVal Target As Range)
Dim wsCmt As Worksheet
Dim strCmt As String
Dim rngCmt As Range
Set wsCmt = Worksheets("CommentList")
Set rngCmt = wsCmt.Range("CommentList")

On Error Resume Next
strCmt = [deel1] & Chr(10) & Application.WorksheetFunction.VLookup(Target.Value, rngCmt, 2, 0) & Chr(10) & Chr(10) & _
         [deel2] & Chr(10) & Application.WorksheetFunction.VLookup(Target.Value, rngCmt, 3, 0)

[COLOR="red"][B]Target.Offset(0, 6) [/B][/COLOR]= strCmt
'Range("H" & Row().Select).Value = strCmt

End Sub

Gr. Cobbe
 
Zo wel?

Code:
Cells(ActiveCell.Row(), 8).Select
Cells(ActiveCell.Row(), 8).Value = strCmt

Niels
 
Nee helaas hij werkt net zoals de oplossing van niels.

Als je mijn bestandje bekijk zie je dat als je op cel B4; C4; D4 klikt de extra gegevens in cellen H4:N21 komen te staan.
Ga je op een ander cel staan is dit bereik weer leeg.
In cellen H4:H21 zie je niets staan.

Nu wil ik dus als je op Cel B24; C24; D24 klik de gegevens in H24:N41 verschijnen.
H4:H21 zijn dan weer leeg.
 

Bijlagen

Code:
Range("H4:N61").ClearContents
Cells(ActiveCell.Row(), 8).Select
Cells(ActiveCell.Row(), 8).Value = strCmt

Ik heb er dit van gemaakt.
Uit de eerste test lijkt deze het goed te doen.
 
Code:
Range("H4:N61").ClearContents
[b]Cells(ActiveCell.Row(), 8).Select[/b]
Cells(ActiveCell.Row(), 8).Value = strCmt
Om een waarde in een cel te plaatsen, hoef je die cel niet eerst te selecteren.
De hierboven vetgedrukte regel kun je dus weglaten.
Het wordt dan ook wat 'rustiger' in het blad als je namen aanklikt.
 
OK, dit werkt nu.

Maar zoals zo vaak doemen er nieuwe problemen op.
In het originele bestand wordt alles toch wel traag.
Ik denk dat het komt door het bereik (hele tabblad)
Eigenlijk heb ik aan een tiental cellen genoeg.
Hoe kan ik de range nog opgeven.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim wsCmt As Worksheet
Dim strCmt As String
Dim rngCmt As Range
Set wsCmt = Worksheets("CommentList")
Set rngCmt = wsCmt.Range("CommentList")

    With Range("b4:d4,b24:d24,b44:d44,b64:d64")

On Error Resume Next
strCmt = [deel1] & Chr(10) & Application.WorksheetFunction.VLookup(Target.Value, rngCmt, 2, 0) & Chr(10) & Chr(10) & _
         [deel2] & Chr(10) & Application.WorksheetFunction.VLookup(Target.Value, rngCmt, 3, 0)

    Range("H3:N61").ClearContents
    Cells(ActiveCell.Row(), 8).Value = strCmt
    
    End With

End Sub
 
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim wsCmt As Worksheet
Dim strCmt As String
Dim rngCmt As Range
Set wsCmt = Worksheets("CommentList")
Set rngCmt = wsCmt.Range("CommentList")

If not Intersect(Target,Range("b4:d4,b24:d24,b44:d44,b64:d64")) is nothing then

On Error Resume Next
strCmt = [deel1] & Chr(10) & Application.WorksheetFunction.VLookup(Target.Value, rngCmt, 2, 0) & Chr(10) & Chr(10) & _
         [deel2] & Chr(10) & Application.WorksheetFunction.VLookup(Target.Value, rngCmt, 3, 0)

    Range("H3:N61").ClearContents
    Cells(ActiveCell.Row(), 8).Value = strCmt
    
    End if

End Sub
 
Thanks.!!

Het originele bestand is inderdaad een stuk sneller geworden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan