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

Macro uitvoeren op welbepaalde cel

Status
Niet open voor verdere reacties.
Ik heb nog 1 vraagje hieromtrent

Ik gebruik deze macro meermaals op dezelfde sheet (met telkens het openen van een ander tabblad).

Als ik 1 van de macro's lanceer krijg ik de melding dat de naam van de macro meermaals bestaat. De eerste zou ik bijvoorbeeld noemen Worksheet_BeforeDoubleClick_CT (omdat ie naar de sheet CT verwijst)


Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 4 And Target.Count = 1 And Target.Row > 1 And Target.Value <> "" Then
        With Sheets("CT")
            .Range("A1") = Range(Target.Address).Offset(, -1)
            .Activate
        End With
        Cancel = True
    End If
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 28 And Target.Count = 1 And Target.Row > 1 And Target.Value <> "" Then
        With Sheets("PID")
            .Range("A1") = Range(Target.Address).Offset(, -1)
            .Activate
        End With
        Cancel = True
    End If
End Sub
 
Worksheet_BeforeDoubleClick_CT is niet een bestaand event in Excel.
Worksheet_BeforeDoubleClick mag maar 1x per werkblad voor komen.
Gebruik dan zoiets:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 4 And Target.Count = 1 And Target.Row > 1 And Target.Value <> "" Then
        Sheets("CT").Range("A1") = Range(Target.Address).Offset(, -1)
        Sheets("PID").Range("A1") = Range(Target.Address).Offset(, -1)
        Sheets("PID").Activate
        Cancel = True
    End If
End Sub
 
Dank voor deze snelle feedback. Maar nu opent hij steeds PID ...
Ik zou bij klikken in cel D1 sheet CT willen openen.
Ik zou bij klikken in cel AA1 sheet PID willen openen.
Is dit doenbaar ?
PS dat hij zowel in CT als PID de inhoud plaatst heb ik geen probleem mee, is zelfs nog nuttig voor andere vereenvoudiging die ik kan plaatsen
 
Dat kan allemaal:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 4 And Target.Count = 1 And Target.Row > 1 And Target.Value <> "" Then
        Sheets("CT").Range("A1") = Range(Target.Address).Offset(, -1)
        Sheets("PID").Range("A1") = Range(Target.Address).Offset(, -1)
        Select Case Target.Address(0, 0)
            Case "D1", Sheets("CT").Activate
            Case "AA1", Sheets("PID").Activate
        End Select
        Cancel = True
    End If
End Sub
 
Ik zie de flow maar dit lukt niet : als ik op D1 klik krijg ik PID, en als ik op AA1 druk krijg ik niets , de macro wordt dan niet geactiveerd
 
Je moet uiteraard wel ook target.column erop aanpassen.
Probeer te begrijpen wat daar gebeurt.
 
Ik draai ...
Ik splits op in 2 if's

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 4 And Target.Count = 1 And Target.Row > 1 And Target.Value <> "" Then
        Sheets("CT").Range("A1") = Range(Target.Address).Offset(, -1)
        Select Case Target.Address(0, 0)
            Case "D1", Sheets("CT").Activate
        End Select
        Cancel = True
    End If
    If Target.Column = 27 And Target.Count = 1 And Target.Row > 1 And Target.Value <> "" Then
        Sheets("PID").Range("A1") = Range(Target.Address).Offset(, -25)
        Select Case Target.Address(0, 0)
            Case "AA1", Sheets("PID").Activate
        End Select
        Cancel = True
    End If
End Sub

Doch celAA is leeg (moet leeg blijven) en bij het dubbelklikken doet hij niets (hij gaat de inhoud van cel C1 niet zoeken doch ik verwijs ernaar via Range(Target.Address).Offset(, -25).
Als ik in de cel AA het nummer geef, lanceert de macro wel maar dit mag niet de bedoeling zijn ...
 
Foutje dat ik wel vaker maak.
En als een cel leeg mag zijn dan haal je toch die controle op gevuld zijn eruit?
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 4 Or Target.Column = 27 And Target.Count = 1 And Target.Row > 1 Then
        Sheets("CT").Range("A1") = Range(Target.Address).Offset(, -1)
        Sheets("PID").Range("A1") = Range(Target.Address).Offset(, -1)
        Select Case Target.Column
            Case 4: Sheets("CT").Activate
            Case 27: Sheets("PID").Activate
        End Select
        Cancel = True
    End If
End Sub
 
Ik begrijp je vraag niet echt vrees ik ...
op cel D5 doet ie het doch op cel AA gaat ie naar de correct sheet PID doch is mijn variabele (als ik dat zo mag noemen) van cel c3 er niet en krijg ik de sheet met een blanco inhoud. Ik weet niet of je mijn chinees kan volgen ... :confused:
 
En je hebt al gekeken wat dit betekent?
Code:
Range(Target.Address).Offset(, -1)
 
Uiteraard krijg je dan een foutmelding als je dubbelklikt in kolom D.
4 - 27 levert een negatief getal en een kolom met een negatief nummer bestaat niet.
 
ik redeneerde dat de -1 staat voor de initiële kolom 4 - 1 = gegeven uit kolom 3
Vandaar dat ik redeneerde kolom 27 - 25 ? Ik zie de flow zonder twijfel niet zoals u hem ziet.
 
Als het altijd C3 moet zijn maak je er toch gewoon dit van?
Code:
Sheets("CT").Range("A1") = Range("C3")
Sheets("PID").Range("A1") = Range("C3")
 
Nee , dat is exact mijn probleem. Het is niet altijd C3, het is in de voorbeeldfile xlsx cel C2 als dit voorbeeld, maar er zijn honderden dossiers die volgen zijnde in cel C3 C4 C5. Dus eigenlijk bedoel ik vanop de cel dat ik klik om de macro te lanceren (bv D2 of AA2 de variabele uit cel C2, bv D3 of AA3 de variabele uit cel C3, enz...)
 
Dan moet je dus het correcte regelnummer meegeven:
Code:
Sheets("CT").Range("A1") = Cells(Target.Row, 3)
Sheets("PID").Range("A1") = Cells(Target.Row, 3)

Of:
Code:
Sheets("CT").Range("A1") = Range("C" & Target.Row)
Sheets("PID").Range("A1") = Range("C" & Target.Row)
 
Het is gelukt ! Met dank !
Ik zoek nu nog de interpretatie uit van de -1, blijkbaar interpreteer ik dit dus niet correct en weet niet waarvoor deze staat.
 
Target.Offset gaat uit van in dit geval het adres van de cel waarop de dubbelklik werd gedaan.
De eerste parameter van Offset is het regelnummer en de tweede het kolomnummer.
De nummers die je er opgeeft zijn dus relatief aan die cel (Target.Address)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan