Help!

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

Hulp bij posten

Recente topics

Auteur Topic: Feestdagen Vlaanderen - sorteer-array - VBA  (gelezen 4693 keer)

0 leden en 1 gast bekijken dit topic.

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Feestdagen Vlaanderen - sorteer-array - VBA
« Gepost op: 08 september 2014, 09:37:27 »
Hoi iedereen,

In bijlage een werkje dat ik hebt gemaakt in VBA om de Vlaamse feestdagen in keuzelijst te zetten. Voor 2014 heb ik de code manueel geschreven dat de feestdagen gerangschikt zijn. Vanaf een andere opgegeven jaar klopt de rangschikking in de lijst niet.

Mijn vraag is dat er iemand is die een tweede sorteer array in VBA kan maken zodat de feestdagen op datum gerangschikt zijn.

Diezel
OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Feestdagen Vlaanderen - sorteer-array - VBA
« Reactie #1 Gepost op: 08 september 2014, 22:34:19 »
Hey Diezel,

Aangenomen dat je al zelf had proberen sorteren : het probleem zat in het feit dat je een tweedimensionele array had gedefinieerd als string. Ik heb er twee arrays van gemaakt : eentje met de datums (dim as DATE) en eentje met de benamingen (STRING).

Vermits er maar van een beperkt aantal elementen sprake is heb ik er vervolgens de meest eenvoudige sorteermethode op losgelaten  :-\

Mijn kennis van Access is extreem laag (van Excel weet ik een beetje meer), en specialisten zouden dit dus waarschijnlijk anders oplossen, maar 'k denk wel dat het werkt  :-\

Mvg,
Pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Re: Feestdagen Vlaanderen - sorteer-array - VBA
« Reactie #2 Gepost op: 08 september 2014, 22:58:44 »
Hoi Pitufo,

Jou oplossing is geweldig en de gesorteerde feestdagen op datum en hun benamingen klopt als een bus.

Weer wat bijgeleerd over eenvoudig sorteren en arrays. Dacht aan quicksort bij het uitproberen maar vond geen code.

Op deze website kunnen de feestdagen nagekeken worden:
https://www.wettelijke-feestdagen.be/wettelijke-feestdagen-belgie-2015.aspx


Diezel
OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Re: Feestdagen Vlaanderen - sorteer-array - VBA
« Reactie #3 Gepost op: 08 september 2014, 23:37:11 »
laatste vraagje:

Hoe kan je verhinderen om lege string of tekst of datum in inputbox te voeren?

Diezel
OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

Offline dizzl

  • Ambassadeur
  • *****
  • Berichten: 2.345
  • I've Upped my standards,now,up yours!
Re: Feestdagen Vlaanderen - sorteer-array - VBA
« Reactie #4 Gepost op: 09 september 2014, 07:42:45 »
Bij knop-klik doe je een

if isnull(veld)
    msgBox "Veld is niet ingevuld"
    exit sub
end if

Soms werkt dit niet. In dat geval doe ikhet
if len(veld) < 1 then
    msgBox "Veld is niet ingevuld"
    exit sub
end if




Systeem  : Intel Core i5-4440 3.1Ghz, 3.1GHz 16Giga Ram 64Bits
Software : Windows 10 professional, Avira, Office 2016 Professional

Offline Diezel

  • Oplosser
  • ****
  • Berichten: 508
  • Geslacht: Man
  • Meedenker - Initiatief nemen - Helpen oplossen...
Re: Feestdagen Vlaanderen - sorteer-array - VBA
« Reactie #5 Gepost op: 09 september 2014, 11:39:05 »
Hoi Dizzl,

Heb het zo opgelost:

Het probleem zat hem dat het antwoord van de inputbox gedeclareerd was als Integer. Heb het dan een string van gemaakt. Na de controle heb ik voor het Jaar, CInt(Antwoord) meegegeven.


Dim Jaar As Integer
Dim Antwoord As String

 Antwoord = InputBox("geef jaartal", "Jaar XXXX")
   
    If (Len(CStr(Antwoord)) < 1) Then
        MsgBox "De invoer wordt niet aanvaard." & vbCrLf & "Je hebt niets ingevoerd", 48, "Fout!"
       
         Exit Sub
       End If
   
    If Not IsNumeric(Antwoord) Or IsDate(Antwoord) Then
        MsgBox "De invoer wordt niet aanvaard." & vbCrLf & "Je hebt letters of een datum ingevoerd", 48, "Fout!"
       
        Exit Sub
    End If
   
    If Val(Antwoord) < 1900 Or Val(Antwoord) > 9999 Then
        MsgBox "Toets een jaar in die begint van:" & vbCrLf & "1900 tot en met 9999", 64, "Jaar"
       
        Exit Sub
    End If
   
    Jaar = CInt(Antwoord)

Alvast bedankt voor jullie oplossende bijdrage. Nu nog zien de code aan een rapport te hangen. In word en Excel kan de code van de Vlaamse feestdagen in een Macro gezet worden. Zo heb je een leuk document om de feestdagen niet meer te vergeten.

Diezel
OS: Windows 10 Home - 64 bit
Processor:  Intel(R) Core(TM) I7 - 4770 CPU 3,40 GHZ
SSD - RAM: 500 GB, 16 GB
SOFTWAREPAKKET: Office 2007

 


www.combell.com