Hoe een macro starten bij gelinkte cel bepaalde waarde

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • ronaldutrecht
  • Registratie: Augustus 2016
  • Laatst online: 11-07-2024
Dag,

Ik wil een macro starten als een gelinkte cel een bepaalde waarde heeft.

Ik gebruik nu deze code:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then Exit Sub
If IsNumeric(Target) And Target.Address = "$A$1" Then
Select Case Target.Value
Case 1 To 5: Macro1
Case Is = 8: Macro2
End Select
End If
End Sub

Maar die werkt alleen als ik handmatig de cel aanpas, het werkt niet via een gelinkte cel.
Alvast bedankt,
Gr Ronald

Alle reacties


Acties:
  • +2 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Niet controleren op wijziging van A1 maar van de celbeteiken die A1 gebruikt voor de berekening.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • ronaldutrecht
  • Registratie: Augustus 2016
  • Laatst online: 11-07-2024
hoe bedoel je precies? Moet ik cel A1 als naam definiëren?

Acties:
  • +1 Henk 'm!

  • NielsNL
  • Registratie: Januari 2002
  • Laatst online: 01-10 15:02

NielsNL

DigiCow

Visual Basic:
1
2
3
4
5
6
7
8
9
10
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If Target.Cells.Count > 1 Then 
    Exit Sub
    If IsNumeric(Target) And (Target.Address = "$A$1"  OR Target.Address = "$colums$row") Then
        Select Case Target.Value
            Case 1 To 5: Macro1
            Case Is = 8: Macro2
        End Select
    End If
End Sub

Dus ook de link cel controleren als target.

[ Voor 8% gewijzigd door NielsNL op 14-03-2019 12:34 ]

M'n Oma is een site aan het haken.


Acties:
  • 0 Henk 'm!

  • ronaldutrecht
  • Registratie: Augustus 2016
  • Laatst online: 11-07-2024
bedankt Niels, maar ik krijg nog een foutmelding bij deze code ivm de compileerfout (blok if zonder End if)

Moet er nog iets bij?

Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Het is dan ook pseudocode die je zelf wilt afmaken, @ronaldutrecht ;)

Je wilt sowieso -nooit- zomaar andermans code draaien zonder het volledig te begrijpen. Dan gaat het fout.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • +1 Henk 'm!

  • Jivebunny
  • Registratie: November 2010
  • Niet online

Jivebunny

Fail to plan. Plan to fail.

ronaldutrecht schreef op donderdag 14 maart 2019 @ 12:37:
bedankt Niels, maar ik krijg nog een foutmelding bij deze code ivm de compileerfout (blok if zonder End if)

Moet er nog iets bij?
Er zijn twee IF statements geopend en er is er maar 1 gesloten. Dus nog een End If erbij.

Pixel 9 Pro XL | NAS: HP Gen8 e3-1265L v2 16GB 12TB unRAID 6.9.2 | D: Ryzen 5600x 16GB 3000mhz RX 6800 XT MB Acer 27" IPS 144hz | Suzuki Swift 1.2 (2013)


Acties:
  • 0 Henk 'm!

  • ronaldutrecht
  • Registratie: Augustus 2016
  • Laatst online: 11-07-2024
dankje, maar de code werkt dan niet meer lijkt het:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Cells.Count > 1 Then
Exit Sub
If IsNumeric(Target) And (Target.Address = "$A$1" Or Target.Address = "$colums$row") Then
Select Case Target.Value
Case 1 To 5: Macro1
Case Is = 8: Macro2
End Select
End If
End If

End Sub

Acties:
  • 0 Henk 'm!

  • ronaldutrecht
  • Registratie: Augustus 2016
  • Laatst online: 11-07-2024
Iemand enig idee hoe het met een gelinkte cel dan kan?

Via het handmatig het intypen werkt maar dus nog niet via een gelinkte cel.
Alvast erg bedankt

Acties:
  • +1 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Je moet de eerste 'End if' wel op de juiste plaats zetten: onmiddellijk na 'Exit Sub'.

Acties:
  • 0 Henk 'm!

  • ronaldutrecht
  • Registratie: Augustus 2016
  • Laatst online: 11-07-2024
dankje, maar dan werkt het nog niet als ik cel a1 gelinkt heb aan een andere cel.

Het werkt wel als ik het handmatig intyp in cel A1. Iemand een idee?

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Geef eens een voorbeeld wat je precies bedoelt met 'als ik cel a1 gelinkt heb aan een andere cel'.

Acties:
  • 0 Henk 'm!

  • ronaldutrecht
  • Registratie: Augustus 2016
  • Laatst online: 11-07-2024
Bv:

in cel a1 = waarde a2

als ik in a2 dan '8' in type, dan start macro2 niet. Het start wel als ik handmatig in cel A1 '8' intype.

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Wil je dan (bijvoorbeeld) dat macro2 gestart wordt als A2 gelijk is aan A1, en ook als A3 gelijk is aan A3, en ook als..., kortom als andere cellen gelijk zijn aan A1?

Acties:
  • 0 Henk 'm!

  • ronaldutrecht
  • Registratie: Augustus 2016
  • Laatst online: 11-07-2024
nee het gaat niet om de gelijkheid.
Het gaat om: macro2 moet starten bij '8' in cel A1. Als ik dat handmatig intyp werkt de macro

Als ik in cel A1 zet: =A2 en ik typ in A2 die waarde '8' in, dan zie ik wel in cel A1 uiteraard '8' staan maar de macro start niet, dat is het punt

Erg veel dank voor je hulp

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Als het alleen om A1 en A2 gaat (wat ik uit je bericht begrijp), dan zou je dit kunnen gebruiken:
code:
1
2
3
4
5
6
7
8
9
10
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Range("A1:A2"), Target) Is Nothing Then
If Target.Cells.Count > 1 And IsNumeric(Target) = False Then
Exit Sub
End If
If Cells(1, 1).Value = Cells(2, 1).Value Then
macro 2
End If
End If
End Sub

Acties:
  • 0 Henk 'm!

  • ronaldutrecht
  • Registratie: Augustus 2016
  • Laatst online: 11-07-2024
Merci, maar dit is nog niet helemaal wat ik zoek

Ik wil de macro2 pas laten starten als cel A2 '8' bevat (dit is weer afh. vd som van andere cellen)

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Je moet dus twee zaken controleren:
a: heeft de verandering plastsgevonden in een van de broncellen
b: is de waarde van A1 gelijk aan 8
code:
1
2
If (targetsdress=R’K’ or targetadress=R’’K’’ or...)
select case RK.value


edit:
exact wat @F_J_K dus ook al zegt in zijn eerste reactie en waarmee @NielsNL je al een aardig stuk op weg helpt.

[ Voor 25% gewijzigd door Lustucru op 14-03-2019 17:58 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • ronaldutrecht
  • Registratie: Augustus 2016
  • Laatst online: 11-07-2024
Dankje, maar hoe verwerk ik dit in de totale code?

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
ronaldutrecht schreef op donderdag 14 maart 2019 @ 15:41:Ik wil de macro2 pas laten starten als cel A2 '8' bevat ([dit is weer afh. vd som van andere cellen).
Als je A2 niet handmatig wijzigt, moet bekend zijn welke andere cellen dat zijn.

[ Voor 6% gewijzigd door dix-neuf op 14-03-2019 16:15 ]


Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

ronaldutrecht schreef op donderdag 14 maart 2019 @ 16:09:
Dankje, maar hoe verwerk ik dit in de totale code?
Doe eens gek en probeer eens wat met de diverse hints die je hebt gehad? Immers:
F_J_K schreef op donderdag 14 maart 2019 @ 12:45:
Het is dan ook pseudocode die je zelf wilt afmaken.

Je wilt sowieso -nooit- zomaar andermans code draaien zonder het volledig te begrijpen. Dan gaat het fout.
en daar heeft hij heel erg gelijk in.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

  • ronaldutrecht
  • Registratie: Augustus 2016
  • Laatst online: 11-07-2024
ok bedankt, het is ondertussen al via een alternatieve code opgelost

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
ronaldutrecht schreef op vrijdag 15 maart 2019 @ 16:24:
...het is ondertussen al via een alternatieve code opgelost
Hoe ziet die code er uit, wil je die hier eens plaatsen?
Het is altijd interessant om te vernemen hoe iemand tot een oplossing is gekomen.

Acties:
  • 0 Henk 'm!

  • ronaldutrecht
  • Registratie: Augustus 2016
  • Laatst online: 11-07-2024
zeker:

Dim t As Range

Set t = Range("A1")

If IsNumeric(t.Value) Then

Select Case t.Value
Case 1 To 5: Call Macro1
Case Is = 8: Call firstrawfilter


End Select

End If

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
En met 'firstrawfilter' plaats je dan een filter op de eerste rij?
Jammer dat je geen antwoord gaf op mijn eerdere vraag over welke andere cel(len) de inhoud van A2 bepalen, dan had ik nog een andere poging gewaagd. Maar als je vraag voldoende is opgelost, is het ok natuurlijk.

Acties:
  • 0 Henk 'm!

  • ronaldutrecht
  • Registratie: Augustus 2016
  • Laatst online: 11-07-2024
sorry zie net je antwoord. Ja 'firstrawfilter' is een lokale macro.
Tis dus opgelost, in ieder geval zeer veel dank voor de hulp

Hoe kom jij trouwens aan je vba kennis? Weet je er een goed boek voor?

Acties:
  • +1 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Ik gebruik de vba-helpfile van Excel, daar staan alle opdrachten in.
Pagina: 1