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 4687 keer)

0 leden en 1 gast bekijken dit topic.

Offline JEC

  • Excel-Expert
  • Ervaren lid
  • *****
  • Berichten: 422
Re: switchen tussen macro's met overname variabelen
« Reactie #15 Gepost op: 09 november 2021, 17:41:09 »
Met een van bovenstaande macro's gaat het je zeker lukken ;)

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: switchen tussen macro's met overname variabelen
« Reactie #16 Gepost op: 09 november 2021, 17:42:03 »
Gewoon een probeerseltje  :)
Sub vul_array()

Dim arr()
d1 = DateSerial(2021, 11, 9)
d2 = DateSerial(2021, 11, 15)
ReDim arr(d2 - d1)
For x = 0 To UBound(arr)
    arr(x) = x + d1
Next x

End Sub
Bedankt voor je voorbeeld.  ;)
Ik bekijk het straks even grondiger, nu eerst avondeten klaarmaken  ;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 #17 Gepost op: 09 november 2021, 17:45:21 »
Vullen van een array met datum range


Sub jec()
 Dim ar() As Variant, fdate As Long, ldate As Long, i As Long, x As Long
 fdate = Date
 ldate = Date + 15
 
 For i = fdate To ldate
    ReDim Preserve ar(x)
    ar(x) = Format(i, "mm-dd-yyyy")
    x = x + 1
 Next
 
End Sub

Oops, had jouw berichtje tussen het mijne en dat van Molly niet onmiddellijk opgemerkt  :D...

Ik bestudeer beide straks even nader... nu eerst zorgen voor de maag van de dochter  ;D :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 MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: switchen tussen macro's met overname variabelen
« Reactie #18 Gepost op: 09 november 2021, 18:40:01 »
Voor een goed begrip: inhoudelijk is er nauwelijks verschil tussen de code van Veerj en die van mij.
Alhoewel mijn code onder die van Veerj staat was ze net iets eerder gepost, anders zou het er nogal sullig uitzien.

Dit is met nadruk geen kritiek aan het adres van Veerj, maar een bericht nog wijzigen dat niet het laatste is wil wel eens tot lichte verwarring leiden  ;D
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 #19 Gepost op: 09 november 2021, 18:42:12 »
Mijn aanpassing overlapte met jouw post, vandaar ;)

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: switchen tussen macro's met overname variabelen
« Reactie #20 Gepost op: 10 november 2021, 10:54:28 »
***UPDATE***

Op basis van beide aangereikte voorbeelden lukte het mij vrij snel om al mijn standaard Arrays te vullen.
Omdat ik met de verschillende Arrays allerlei diverse bewerkingen moet uitvoeren ben ik nu een hele ochtend (met simpele gegevens) wat aan het testen en puzzelen geweest en heb voor enkele standaard bewerkingen een werkend code-blok kunnen opbouwen.
Naargelang ik de meer ingewikkelde bewerkingen zal bereiken zal ik deze standaard code-blokjes wel moeten aanpassen waarbij ik vermoedelijk nog wat hulp/tips zal kunnen gebruiken van de experts.  ;D

Dus zodra ik opnieuw kom vast te zitten lezen jullie het hier wel. ;)

Nogmaals mijn oprechte dank aan Veerj  en MollyVH voor de aangereikte voorbeelden. _/-\o_ :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 BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: switchen tussen macro's met overname variabelen
« Reactie #21 Gepost op: 11 november 2021, 08:52:24 »
Goeiemorgen iedereen,

Na gisteren al een groot deel van de meer complexe bewerkingen met arrays tot een goed einde gebracht te hebben is er toch ééntje waar ik sinds gisteren namiddag maar niet door geraak...

Van al de arrays zijn er 2 (arrA en arrB) die als eindresultaat gebruikt zullen worden voor de uitvoer en welke dus onder specifieke voorwaarden bijgevuld worden met datums uit andere arrays.

arr1 is een array met 14 opeenvolgende datums.
Afhankelijk van het jaar (even of oneven) moeten deze datums verdeeld worden over arrA en arrB.
jaar = 'even' dan eerste 7 dagen naar arrA en laatste 7 dagen naar arrB
jaar = 'oneven' dan eerste 7 dagen naar arrB en laatste 7 dagen naar arrA

arr2 is een array met 7 opeenvolgende datums.
Afhankelijk van de voorafgaande zaterdag (1e, 2e, 3e, 4e of 5e v/d maand) moeten ook deze datums verdeeld worden over arrA en arrB.
voorafgaande zaterdag = 1e, 3e of 5e v/d maand dan eerste 3 dagen naar arrA en laatste 4 dagen naar arrB
voorafgaande zaterdag = 2e of 4e v/d maand dan eerste 3 dagen naar arrB en laatste 4 dagen naar arrA

Omdat er binnen mijn huidige code gevoelige informatie verwerkt zit is het moeilijk een actueel voorbeeldbestand bij te voegen.
Hopelijk is mijn uitleg voldoende duidelijk om toch enigszins een tip/aanwijzing te kunnen krijgen die mij op weg helpt.

Alvast mijn oprechte dank.

P.S.: de eerste datum in arr1 en arr2 is altijd een maandag.

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 #22 Gepost op: 11 november 2021, 10:14:23 »
***UPDATE***

situatie ingeval van arr1 is opgelost!  ;D
De structuur van mijn code blijkt wel juist te zijn, was enkel 1 dingetje vergeten te doen waardoor ik steeds foutmelding kreeg.

Nu proberen of ik situatie ingeval van arr2 ook opgelost krijg.


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 #23 Gepost op: 11 november 2021, 10:46:00 »
Mooi zo, in dat geval enkel een heel klein duwtje in de juiste richting.
Met wat je al hebt in orde gekregen (laat je misschien even zien?, dan kijken we meteen of je het voldoende simpel hebt gehouden  ;)) kom je er met dit zeker ook. Het bovenste stukje van mijn code heb je uiteraard niet nodig; heb ik enkel gedaan om een array met 7 datums te maken.
Sub mvh()

Dim arr1(6)
eerste = DateSerial(2021, 11, 8)
For i = 0 To 6
    arr1(i) = eerste + i
Next i

Select Case Day(arr1(0) - 2)
    Case 8 To 14, 22 To 28
        week = "even"
    Case Else
        week = "oneven"
End Select

End Sub
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 #24 Gepost op: 11 november 2021, 12:26:35 »
@MollyVH,

Bedankt voor jouw voorbeeldje! _/-\o_

Met die tweede situatie liep ik steeds vast op het object van mijn eerste select case. Adhv jouw voorbeeldje heb ik de juiste formulering gevonden voor dat object. Dit is wat ik voor beide situaties opgebouwd heb :

voor situatie arr1 :
Sub verdeel1()

fDate = DateSerial(2021, 11, 1)
lDate = DateSerial(2021, 11, 14)

Dim arr1()
For i = fDate To lDate
    ReDim Preserve arr1(x)
    arr1(x) = i
    x = x + 1
Next i

Dim arrA()
Dim arrB()

For Each dag In arr1
    ReDim Preserve arrA(a)
    ReDim Preserve arrB(b)
    If Year(dag) = Even Then
        Select Case dag
            Case arr1(0) To arr1(6)
                arrA(a) = dag
                a = a + 1
            Case arr1(7) To arr1(13)
                arrB(b) = dag
                b = b + 1
        End Select
    Else
        Select Case dag
            Case arr1(0) To arr1(6)
                arrB(b) = dag
                b = b + 1
            Case arr1(7) To arr1(13)
                arrA(a) = dag
                a = a + 1
        End Select
    End If
Next dag

End Sub

voor situarie arr2 :
Sub verdeel2()

fDate = DateSerial(2021, 11, 1)
lDate = DateSerial(2021, 11, 7)

Dim arr2()
For i = fDate To lDate
    ReDim Preserve arr2(x)
    arr2(x) = i
    x = x + 1
Next i

Dim arrA()
Dim arrB()
For Each dag In arr2
    ReDim Preserve arrA(a)
    ReDim Preserve arrB(b)
    Select Case Day(arr2(0) - 2)
        Case 1 To 7, 15 To 21, 29 To 31
            Select Case Weekday(dag, vbMonday)
                Case 1 To 3
                    arrA(a) = dag
                    a = a + 1
                Case 4 To 7
                    arrB(b) = dag
                    b = b + 1
            End Select
        Case 8 To 14, 22 To 28
            Select Case Weekday(dag, vbMonday)
                Case 1 To 3
                    arrB(b) = dag
                    b = b + 1
                Case 4 To 7
                    arrA(a) = dag
                    a = a + 1
            End Select
    End Select
Next dag

End Sub

Mogelijks heb ik teveel omweggetjes gebruikt  ;D maar het codeblok geeft wel het gewenste resultaat.
Aangezien ik nog maar sinds deze week echt met arrays ben beginnen werken en dus nog volop aan het leren (testen, uitproberen, puzzelen, ...) ben zal mijn code-opbouw naarmate ik bijleer hopelijk ook beter worden  ;)


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 #25 Gepost op: 11 november 2021, 13:14:32 »
Hallo BlackDevil,

Zoals ik uit je eerdere post kon opmaken moesten altijd de eerste 7 datums naar één array, de laatste 7 naar een andere, het kan dus inderdaad een stukje eenvoudiger. Een serie van 14 datums kan datums uit 2 kalenderjaren bevatten (hier zelfs waarschijnlijk vermits ik me 'kerstvakantie' herinner), dus welke je dan neemt om te bepalen of het over een even jaar gaat valt niet af te leiden (of ik heb erover gekeken).
Als ik me van dat laatste distantieer kom ik er bv. al met:
Sub verdeel1()

fdate = DateSerial(2021, 11, 1)
Dim arr1(13)
For i = 0 To 13
    arr1(i) = i + fdate
Next i

Dim arrA(6)
Dim arrB(6)
For i = 0 To 6
    arrA(i) = arr1(i)
    arrB(i) = arr1(i + 7)
Next i

End Sub
Met enkel nog één IF-statement erbij moet het dan volstaan. Voor de andere kwestie kan je dezelfde kant op.
Wel even opletten met " If Year(dag) = Even Then". Ik had "even" als tekst gebruikt om je duidelijk te maken binnen welke 'Case' je het aan de ene of de andere array moest toevoegen. In jouw methode is Even een variabele die geen waarde bevat, dus je IF zal altijd FALSE geven.

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 MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: switchen tussen macro's met overname variabelen
« Reactie #26 Gepost op: 11 november 2021, 13:42:52 »
Wel ja, ik heb de tweede situatie ook maar even uitgewerkt (altijd in de veronderstelling dat ik de uitleg niet verkeerd heb begrepen):
Sub verdeel2()

Dim arr1(6)
eerste = DateSerial(2021, 11, 1)
For i = 0 To 6
    arr1(i) = eerste + i
Next i

Dim arrA()
Dim arrB()
Select Case Day(arr1(0) - 2)
    Case 8 To 14, 22 To 28
        ReDim arrA(3)
        ReDim arrB(2)
        For i = 0 To 3
            If i < 3 Then arrB(i) = arr1(i)
            arrA(i) = arr1(i + 3)
        Next i
    Case Else
        ReDim arrA(2)
        ReDim arrB(3)
        For i = 0 To 3
            If i < 3 Then arrA(i) = arr1(i)
            arrB(i) = arr1(i + 3)
        Next i
End Select

End Sub
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 #27 Gepost op: 11 november 2021, 13:58:06 »
@MollyVH,

Inderdaad bij een vakantie van 14 dagen wordt het 7/7 opgesplitst en dit telkens van maandag tot zondag.
In mijn huidig project gaat het voor deze code-blok echter enkel maar over de paasvakantie gezien er voor de kerstvakantie een totaal andere verdeling is (welke ik in een volgende stap moet verwerken in een code-blok).

Bedankt voor je voorbeeldje, hiermee kan het idd korter  ;D.

Wat de "If Year(dag) = Even Then" betreft ging ik ervan uit dat er twee parameters zijn, "Even" en "Odd" en als het dan jaar 2022 was dat het dan True zou geven. Maar blijkbaar zag ik dat compleet verkeerd.  :)
Heb er dan nu het volgende van gemaakt : "If Year(dag) Mod 2 = 0 Then.... Else.... End If". :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 BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: switchen tussen macro's met overname variabelen
« Reactie #28 Gepost op: 11 november 2021, 17:47:32 »
Volgende uitdaging  :D
weer vast komen te zitten  :-[

arr3, opnieuw opeenvolgende datums maar dit keer een onbekend aantal.
de eerste datum is steeds de 1e v/d maand, de laatste dag kan variëren van de 3e tot de 9e v/d maand.

als bij de laatste datum de dag v/d maand < 8 dan moeten alle datums naar arrA (bij een even jaar) of arrB (bij een oneven jaar).

echter, als bij de laatste datum de dag v/d maand > 8 dan moeten de eerste datums (kunnen er dus 6 of 7 zijn) naar arrA en de laatste twee naar arrB (bij een even jaar) ofwel de eerste datums (kunnen er dus 6 of 7 zijn) naar arrB en de laatste twee naar ArrA (bij een oneven jaar).

Vermoedelijk ben ik al té lang aan één stuk bezig met allerlei diverse code-blokken en arrays (2 à 3 volle dagen reeds) waardoor ik er niet uit kom  ;D maar wou toch eens navragen voor eventuele tips/hints.

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 BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.029
  • Geslacht: Vrouw
  • veni vidi vici
Re: switchen tussen macro's met overname variabelen
« Reactie #29 Gepost op: 11 november 2021, 18:23:34 »
 :D ok, blijkbaar al te lang aan één stuk bezig waardoor ik het weer vééééél te ver ging zoeken  ;D ;D ;D

heb het simpel opgelost gekregen dus  ;) :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

 


www.combell.com