Help!

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

Hulp bij posten

Recente topics

Auteur Topic: opbouw van een 'loop'  (gelezen 197 keer)

0 leden en 1 gast bekijken dit topic.

Offline BlackDevil

  • Ervaren lid
  • ***
  • Berichten: 398
  • Geslacht: Vrouw
  • Oplossing.be
opbouw van een 'loop'
« Gepost op: 16 september 2021, 07:29:35 »
Goeiemorgen,

Bij het schrijven van een macro heb ik een codeblokje dat zich een 17-tal keren herhaald met telkens
een ander bereik en andere waarden waarvoor ik nu al twee dagen probeer een 'loop' op te bouwen.
Ik krijg het echter niet voor elkaar om de nodige variabelen correct te benoemen.

Daarom hoop ik dat iemand hier mij op weg kan helpen om onderstaande codeblok om te bouwen tot een 'loop' :


If Cells(10, 6) = "" Then
    dat2 = DateValue(dat1) + 300
    Cells(10, 2) = Day(dat2)
    Cells(10, 3) = Month(dat2)
    Cells(10, 4) = Year(dat2)
Else
    Cells(10, 2) = Cells(10, 6)
    Cells(10, 3) = Cells(10, 7)
    Cells(10, 4) = Cells(10, 8)
End If
If Cells(11, 6) = "" Then
    dat3 = DateValue(dat2) + 300
    Cells(11, 2) = Day(dat3)
    Cells(11, 3) = Month(dat3)
    Cells(11, 4) = Year(dat3)
Else
    Cells(11, 2) = Cells(11, 6)
    Cells(11, 3) = Cells(11, 7)
    Cells(11, 4) = Cells(11, 8)
End If
If Cells(12, 6) = "" Then
    dat4 = DateValue(dat3) + 300
    Cells(12, 2) = Day(dat4)
    Cells(12, 3) = Month(dat4)
    Cells(12, 4) = Year(dat4)
Else
    Cells(12, 2) = Cells(12, 6)
    Cells(12, 3) = Cells(12, 7)
    Cells(12, 4) = Cells(12, 8)
End If
If Cells(13, 6) = "" Then
    dat5 = DateValue(dat4) + 300
    Cells(13, 2) = Day(dat5)
    Cells(13, 3) = Month(dat5)
    Cells(13, 4) = Year(dat5)
Else
    Cells(13, 2) = Cells(13, 6)
    Cells(13, 3) = Cells(13, 7)
    Cells(13, 4) = Cells(13, 8)
End If
    'dit gaat zo oplopend door tem
'If Cells(26, 6) = "" Then
    'dat18 = DateValue(dat17) + 300
    'Cells(26, 2) = Day(dat18)
    'Cells(26, 3) = Month(dat18)
    'Cells(26, 4) = Year(dat18)
'Else
    'Cells(26, 2) = Cells(26, 6)
    'Cells(26, 3) = Cells(26, 7)
    'Cells(26, 4) = Cells(26, 8)
'End If
   

Alvast mijn oprechte dank.

groetjes,
BlackDevil

****edit***
nog vergeten te vermelden dat de 'loop' moet stoppen eens een bepaalde datum bereikt is (afhankelijk van meerdere voorwaarden).
Er zijn dus drie mogelijke einddatums (met de variabelen 'mvrbhdat' - 'modat' - 'vodat2')
Als de resulterende datumwaarde uit de loop groter is dan de kleinste datum van de drie einddatums dan dient de loop te stoppen en de betreffende resulterende datumwaarde niet meer weggeschreven te worden.
« Laatst bewerkt op: 16 september 2021, 09:07:53 door BlackDevil »
Windows 10 Home v. 20H2 / Intel(R) Core(TM) i3-3110M CPU @ 2.40GHz 2.40GHz / RAM : 8,00 GB (7,89 GB beschikbaar) / 64-bits besturingssysteem, x64-processor / Intel(R) 7 Series Chipset Family SATA AHCIController / Qualcomm Atheros AR8161 PCI-E Gigabit Ethernet Controller (NDIS 6.30) / Qualcomm Atheros AR9485 Wireless Network Adapter / HGST HTS541010A9E680 / Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP OfficeJet 3831
Bullguard Premium Protection

Offline Veerj

  • Volledig lid
  • **
  • Berichten: 192
Re: opbouw van een 'loop'
« Reactie #1 Gepost op: 16 september 2021, 09:09:09 »
Dat wordt dan zoiets

Sub jvr()
 dat1 = DateValue("1-1-2010")

 For Each it In Range("F10").Resize(4)
   If it = "" Then
      dat1 = dat1 + 300
      it.Offset(, -4).Resize(, 3).Value = Array(Day(dat1), Month(dat1), Year(dat1) - 2000)
   Else
      it.Offset(, -4).Resize(, 3).Value = it.Resize(, 3).Value
   End If
 Next
End Sub

Offline BlackDevil

  • Ervaren lid
  • ***
  • Berichten: 398
  • Geslacht: Vrouw
  • Oplossing.be
Re: opbouw van een 'loop'
« Reactie #2 Gepost op: 16 september 2021, 09:52:03 »
Hey Veerj,

Hartelijk dank voor jouw voorbeeld.
Deze werkt echter enkel maar correct als er in de kolom F (tem H) geen waarde staat.

groetjes,
BlackDevil
Windows 10 Home v. 20H2 / Intel(R) Core(TM) i3-3110M CPU @ 2.40GHz 2.40GHz / RAM : 8,00 GB (7,89 GB beschikbaar) / 64-bits besturingssysteem, x64-processor / Intel(R) 7 Series Chipset Family SATA AHCIController / Qualcomm Atheros AR8161 PCI-E Gigabit Ethernet Controller (NDIS 6.30) / Qualcomm Atheros AR9485 Wireless Network Adapter / HGST HTS541010A9E680 / Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP OfficeJet 3831
Bullguard Premium Protection

Offline BlackDevil

  • Ervaren lid
  • ***
  • Berichten: 398
  • Geslacht: Vrouw
  • Oplossing.be
Re: opbouw van een 'loop'
« Reactie #3 Gepost op: 16 september 2021, 10:56:44 »
***UPDATE***

Heb een werkende opbouw voor mijn 'loop' gevonden....

For i = 9 To 25
dat = Cells(i, 2) & "-" & Cells(i, 3) & "-" & Cells(i, 4)
If Cells(i + 1, 6) = "" Then
    dat = DateValue(dat) + 300
    Cells(i + 1, 2) = Day(dat)
    Cells(i + 1, 3) = Month(dat)
    Cells(i + 1, 4) = Year(dat)
Else
    Cells(i + 1, 2) = Cells(i + 1, 6)
    Cells(i + 1, 3) = Cells(i + 1, 7)
    Cells(i + 1, 4) = Cells(i + 1, 8)
End If
Next i

Nu moet ik nog uitzoeken hoe ik de loop moet stoppen indien een bepaalde datum bereikt is...
Eerst moet ik bepalen welke datum (uit drie gegeven datums) de kleinste is en dan moet de 'loop'
stoppen als de resulterende datumwaarde uit de loop groter is dan die kleinste datum uit de drie einddatums
en mag hij die resulterende datumwaarde niet meer wegschrijven.
Word dus weer enkele uurtjes zoeken  ;D...
Enige tips zijn welkom  ;)

groetjes,
BlackDevil
« Laatst bewerkt op: 16 september 2021, 11:09:42 door BlackDevil »
Windows 10 Home v. 20H2 / Intel(R) Core(TM) i3-3110M CPU @ 2.40GHz 2.40GHz / RAM : 8,00 GB (7,89 GB beschikbaar) / 64-bits besturingssysteem, x64-processor / Intel(R) 7 Series Chipset Family SATA AHCIController / Qualcomm Atheros AR8161 PCI-E Gigabit Ethernet Controller (NDIS 6.30) / Qualcomm Atheros AR9485 Wireless Network Adapter / HGST HTS541010A9E680 / Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP OfficeJet 3831
Bullguard Premium Protection

Offline BlackDevil

  • Ervaren lid
  • ***
  • Berichten: 398
  • Geslacht: Vrouw
  • Oplossing.be
Re: opbouw van een 'loop'
« Reactie #4 Gepost op: 16 september 2021, 11:38:08 »
héhé, het ging vlotter dan gedacht  ;D

einddat = mvrbhdat
If DateValue(modat) < DateValue(mvrbhdat) Then einddat = modat
If DateValue(vodat2) < DateValue(mvrbhdat) Or DateValue(vodat2) < DateValue(modat) Then einddat = vodat2
For i = 9 To 25
dat = Cells(i, 2) & "-" & Cells(i, 3) & "-" & Cells(i, 4)
If Cells(i + 1, 6) = "" Then
    dat = DateValue(dat) + 300
    Cells(i + 1, 2) = Day(dat)
    Cells(i + 1, 3) = Month(dat)
    Cells(i + 1, 4) = Year(dat)
Else
    Cells(i + 1, 2) = Cells(i + 1, 6)
    Cells(i + 1, 3) = Cells(i + 1, 7)
    Cells(i + 1, 4) = Cells(i + 1, 8)
End If
If DateValue(dat) > DateValue(einddat) Then
    Cells(i + 1, 2) = ""
    Cells(i + 1, 3) = ""
    Cells(i + 1, 4) = ""
    Exit For
End If
Next i

groetjes,
BlackDevil
Windows 10 Home v. 20H2 / Intel(R) Core(TM) i3-3110M CPU @ 2.40GHz 2.40GHz / RAM : 8,00 GB (7,89 GB beschikbaar) / 64-bits besturingssysteem, x64-processor / Intel(R) 7 Series Chipset Family SATA AHCIController / Qualcomm Atheros AR8161 PCI-E Gigabit Ethernet Controller (NDIS 6.30) / Qualcomm Atheros AR9485 Wireless Network Adapter / HGST HTS541010A9E680 / Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP OfficeJet 3831
Bullguard Premium Protection

 


www.combell.com