Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: switchen tussen macro's met overname variabelen  (gelezen 4675 keer)

0 leden en 1 gast bekijken dit topic.

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: switchen tussen macro's met overname variabelen
« Reactie #30 Gepost op: 12 november 2021, 12:40:13 »
Goeiemiddag allemaal,

Heb héél eventjes een vraagje omtrent opstarten macro.

Ik heb een aparte macro geschreven voor de lay-out van mijn werkblad welke ik ook achter mijn werkblad heb geplaatst.
Het is een relatief korte code (een geneste 'For...Next'-loop met 4 niveaus).
Deze hoeft enkel te starten als de waarde in cel 'A1' wijzigt.

Hoe speel ik dat klaar?

Alvast dank.

groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: switchen tussen macro's met overname variabelen
« Reactie #31 Gepost op: 12 november 2021, 13:26:39 »
Dit is voldoende

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address(0, 0) = "A1" Then
    'je code
 End If
End Sub

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: switchen tussen macro's met overname variabelen
« Reactie #32 Gepost op: 12 november 2021, 13:35:36 »
@Veerj,

 _/-\o_ dat is wat ik zocht  :thumbsup:
nu kan ik weer eventjes verder  ;D

groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: switchen tussen macro's met overname variabelen
« Reactie #33 Gepost op: 12 november 2021, 13:59:21 »
*edit*

@Veerj,

Is het ook mogelijk om via de worksheet_change de macro te laten opstarten als cel A1 gewijzigd word via een kringveld?
En zoja, hoe doe ik dat dan?

Alvast dank.

groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: switchen tussen macro's met overname variabelen
« Reactie #34 Gepost op: 12 november 2021, 14:34:30 »
Hallo BlackDevil,

Hopelijk mogen er ook anderen reageren?  :D

Dat werkt inderdaad niet, maar je kan wel 'gewoon' een macro aan je kringveld koppelen, net zoals je dat met bv. een opdrachtknop of een afbeelding zou doen.
Dat Change-event heb je dan helemaal niet nodig.

@ Veerj,
Ik wil niet vervelend doen maar "Target.Address(0, 0)"? Is toch helemaal hetzelfde als "Target.Address"(?)
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: switchen tussen macro's met overname variabelen
« Reactie #35 Gepost op: 12 november 2021, 14:43:03 »
Niet helemaal

Private Sub Worksheet_Change(ByVal Target As Range)
Debug.Print Target.Address()
Debug.Print Target.Address(0, 0)
End Sub

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: switchen tussen macro's met overname variabelen
« Reactie #36 Gepost op: 12 november 2021, 14:53:51 »
@ Veerj,

Natuurlijk, maar ik had het weer slecht verwoord, ik bedoelde enkel dat het in het voorbeeld geen meerwaarde had t.o.v. de meer gebruikte en door de meesten beter begrepen notatie, dat laatste is althans mijn ervaring.

Mvg,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: switchen tussen macro's met overname variabelen
« Reactie #37 Gepost op: 12 november 2021, 15:08:48 »
Hallo BlackDevil,

Hopelijk mogen er ook anderen reageren?  :D

Dat werkt inderdaad niet, maar je kan wel 'gewoon' een macro aan je kringveld koppelen, net zoals je dat met bv. een opdrachtknop of een afbeelding zou doen.
Dat Change-event heb je dan helemaal niet nodig.

@ Veerj,
Ik wil niet vervelend doen maar "Target.Address(0, 0)"? Is toch helemaal hetzelfde als "Target.Address"(?)

Tuurlijk mogen anderen ook reageren  ;D

En ja, jouw tip is dan een betere oplossing voor mij, bedankt  _/-\o_
Had niet meteen die mogelijkheid gekoppeld  :) weer wat verstrooid vrees ik  :-[ :D

Bedankt alweer voor al de hulp.  :thumbsup:

groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: switchen tussen macro's met overname variabelen
« Reactie #38 Gepost op: 12 november 2021, 16:19:49 »
@Molly, is inderdaad per persoon verschillend. Ik vermijd die dollartekens in de code

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: switchen tussen macro's met overname variabelen
« Reactie #39 Gepost op: 13 november 2021, 08:04:02 »
Goedemorgen allen,

Voor een bepaalde opmaak van een te zoeken enkele cel gebruik ik volgende code-structuur.

For Each dag In arrFeestdagen
   Set cel = Range("C7:AW12, C16:AW21").Find(dag)
   If Not cel Is Nothing Then
       cel.Font.Italic = True
       cel.Font.Bold = True
   End If
Next dag

Nu heb ik nog enkele andere opmaak-situaties waarbij de gevonden cel eerst uitgebreid moet worden.

situatie 1 : gevonden cel uitbreiden met de 6 volgende cellen (naar rechts)

situatie 2 : gevonden cel eerst uitbreiden met 6 volgende cellen (naar rechts), vervolgens de 7 geselecteerde cellen uitbreiden met de onderliggende 7 opeenvolgende cellen. (dus 14 cellen in totaal).


Hoe kan ik best bovenstaande code-structuur uitbreiden/aanpassen om eerst de gevonden cel uit te breiden naar de grotere selectie en vervolgens de volledige selectie in zijn geheel te omkaderen met een dunne lijn?

Alvast mijn oprechte dank.


groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: switchen tussen macro's met overname variabelen
« Reactie #40 Gepost op: 13 november 2021, 09:56:34 »
Hallo BlackDevil,

Voor situatie 1:
   If Not cel Is Nothing Then
        With cel.Resize(1, 7)
            .Font.Italic = True
            .Font.Bold = True
            .BorderAround 1
        End With
   End If

Wat je zelf vindt blijft langer hangen, dus situatie 2 is voor jou.
Er wordt dan natuurlijk verwacht dat je de oplossing hier nog eens voorlegt  :)
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: switchen tussen macro's met overname variabelen
« Reactie #41 Gepost op: 13 november 2021, 10:34:35 »
@MollyVH,

Hartelijk dank voor je voorbeeld.

Voor situatie 2 zal dat dan het volgende moeten worden (vermoed ik) :
   If Not cel Is Nothing Then
        With cel.Resize(2, 7)
            .BorderAround 1
        End With
   End If

groetjes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: switchen tussen macro's met overname variabelen
« Reactie #42 Gepost op: 13 november 2021, 13:57:50 »
Inderdaad !

We trekken geen punten af (10/10 dus) voor het gebruik van With/End With.
Probeer de werking daarvan evenwel goed te begrijpen. Het heeft maar nut als er minstens 2 onderliggende acties ondernomen worden.
Hier was het dus voldoende met:
If Not cel Is Nothing Then
   cel.Resize(2, 7).BorderAround 1
End If

of nog:
If Not cel Is Nothing Then cel.Resize(2, 7).BorderAround 1
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: switchen tussen macro's met overname variabelen
« Reactie #43 Gepost op: 13 november 2021, 14:11:06 »
@MollyVH,

Inderdaad, als er maar één actie nodig is kan het in één lijntje code.
Was in mijn voorbeeldje, in mijn haast, vooral gefocust op die Resize  ;)

@allen,

Voor mijn volgende situaties was het wat ingewikkelder omdat daar, in tegenstelling tot de eerste twee situaties, de gezochte cel (datum) niet elk jaar op dezelfde weekdag valt.
Dus moest ik werken met een Select Case mbt de weekdag.
Ik heb dit volledig tot een goed einde gekregen MAAR doordat er 7 mogelijkheden zijn heb ik dus in mijn Seclect Case 7x een Case met toch wel redelijk wat lijntjes code waardoor het geheel wel zéér lang wordt.
Nu vroeg ik mij dus af of dergelijke code-structuur per Case misschien ingekort zou kunnen worden.
Indien het niet mogelijk is dan zet ik die specifieke opmaakcodes wel in een aparte module hoor.
Ben gewoon benieuwd om eventuele andere mogelijkheden te leren.

Hieronder zo een code-blokje uit één Case-mogelijkheid :
            Case 2
                With cel4.Resize(1, 6)
                    .Borders(xlEdgeLeft).LineStyle = 1
                    .Borders(xlEdgeTop).LineStyle = 1
                    .Borders(xlEdgeRight).LineStyle = 1
                End With
                cel4.Offset(1, -1).Borders(xlEdgeTop).LineStyle = 1
                With cel4.Offset(1, -1).Resize(3, 7)
                    .Borders(xlEdgeLeft).LineStyle = 1
                    .Borders(xlEdgeRight).LineStyle = 1
                End With
                cel4.Offset(3, 3).Resize(1, 3).Borders(xlEdgeBottom).LineStyle = 1
                With cel4.Offset(4, -1).Resize(1, 4)
                    .Borders(xlEdgeLeft).LineStyle = 1
                    .Borders(xlEdgeRight).LineStyle = 1
                    .Borders(xlEdgeBottom).LineStyle = 1
                End With



Alvast dank.
groejes,
BlackDevil
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: switchen tussen macro's met overname variabelen
« Reactie #44 Gepost op: 13 november 2021, 17:38:11 »
Hallo BlackDevil,

Ietwat langere code is niet per definitie verkeerd. Als je eens met F8 door je code gaat zal je ook zien dat vba niet elke lijn bekijkt, kortom dat zal snel genoeg gaan.
Wat je zou kunnen doen (je zal vba dan een tikkeltje extra werk geven, maar je code zal winnen aan leesbaarheid) is alle getallen die nu aan Resize en Offset hangen door variabelen vervangen, en er waarden aan toekennen binnen Select Case. Dan kan je de eigenlijke opmaak erbuiten zetten.
Dit alles op voorwaarde dat er telkens evenveel en gelijkaardige opmaakinstructies moeten uitgevoerd worden, anders zou je wel eens van de regen in de drop kunnen terechtkomen...

Mvg,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

 


www.combell.com