• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Excel VBA array's

Status
Niet open voor verdere reacties.

longron

Gebruiker
Lid geworden
2 apr 2007
Berichten
361
beste allemaal,

ik heb een probleem met het uitlezen van array's

ik wil vanaf het bestaande rooster een weekoverzicht maken en hij leest de arrays verkeerd.
ofwel ik heb de verkeerde code gebruikt.
wat doe ik verkeerd?
hoe moet ik de array's anders definieren?

in het programma onder het kopje "printen"
staat het item maak print weekoverzicht.

hiermee leest vba de diensten en namen en moet deze op het overzicht "weekoverzicht" invullen.

als dit op een andere manier wel kan of beter hoor ik het graag.


alvast bedankt.

groet,

RonaldBekijk bijlage 309613
 
Je kan beter een document plaatsen waar alle bijkomende zaken niet in zitten, alleen een voorbeeld van je probleem.
 
Heb je gelijk in. Ik ga hem even strippen en opnieuw plaatsen

Thanks

Groetjes
Ronald
 
hierbij de uitgeklede versie met de routine waarom het gaat.

thanks alvast.

groet,

Ronald
 
Beter, maaruh, om welke routine gaat het dan?
Als dat deze is:
Maak_Print_weekoverzicht(control As IRibbonControl)

begin ik er niet aan met al die GoTo's binnen loops, sorry.
GoTo: Uit den boze.

Alleen evt. gebruiken om naar het einde van een routine te gaan.
 
Laatst bewerkt:
Gaat om de routine Sub Maak_Print_weekoverzicht(control As IRibbonControl).

hierin worden eerst de diensten ingelezen vanuit het tabblad "printblad"
daarna teruggegeven aan tabblad "Weekoverzicht"
Ik denkt dat ik de arrays niet goed heb gedefinieerd waardoor dus de inhoud verkeerd wordt teruggegeven.
 
oke, de goto zijn in wezen alleen stappen naar het volgende deel. hoe zou ik het beter kunnen definiëren?

Maar. is de opbouw van de array's zo goed of voer ik daardoor binnen een array in dezelfde array verkeerde informatie in?
Ik heb het idee dat als ik bv mndg ( x,1,1,1) ik het zelfde invoer als mndg (1,1,1,x) X is variable begint bij 1 tot bv 20.
Hoe zou ik dat wel moeten definiëren?
 
Naar mijn idee zijn die arrays totaal overbodig omdat het gebruikte bereik in het Printblad op zich al een array is.
 
oke. maar hoe kan ik dan de juiste namen die bij de diensten horen overzetten naar het andere blad en in een rijtje met alleen die dienstcodes?
 
Wat je allemaal precies doet kan ik er zo snel niet uit opmaken maar een voorbeeld.
Als je het bereik B4:B43 de naam Maandag geeft heb je de hele maandag al beschikbaar met Range("Maandag")(1,1) t/m Range("Maandag")(39,1)
Als je het bereik B4:H43 de naam Week geeft heb je de hele week beschikbaar met Range("Week")(1,1) t/m Range("Week")(39,7)
 
oke. dat snap ik maar dan denk ik dat ik niet uit dat bereik kan filteren dat welke mensen wel een dagdienst draaien en welke een avonddienst of nacht. en ik vrees dat ik binnen dat bereik niet hun naam kan lezen,. Die staat in de kolom ervoor, A5 tm A 43 en in de kolom B5 tm B43 staan hun diensten. code B, D, F, N, P of W
 
Dan pak je toch gewoon het bereik dat je nodig hebt?
 
Volgens mij heb ik dat al duidelijk laten zien toch?
Als je het bereik A4:H43 de naam Rooster geeft heb je het hele rooster beschikbaar met Range("Rooster")(1,1) t/m Range("Rooster")(39,8)
Range("Rooster")(2,1) is dan R.Asberg
De namen zitten dan dus in kolom 1 van de Array en ma t/m zo in kolommen 2 t/m 8.

Je mag het ook zo doen:
Rooster = Sheets("Printblad").Range("A4:H43")
Debug.Print Rooster(2, 1)


Dat levert dan ook R. Asberg op en heb je dus ineens het hele rooster in een array zonder dat je zelf de array definieert.
Het voordeel van een benoemd bereik is dat je deze kan verplaatsen zonder dat het gevolgen heeft voor de code.
Maar bij een benoemd bereik mag je ook dit doen:
Rooster = Sheets("Printblad").Range("Rooster")
Debug.Print Rooster(2, 1)

En heb je weer dezelfde array.
 
Laatst bewerkt:
oke ik ga ermee aan de slag en testen/proberen of ik juiste uitvoer krijg.

overigens lijkt excel vba "Range("Rooster")(1,1) t/m Range("Rooster")(39,8)": niet te snappen, denk het t/m maar misschien begrijp ik je verkeerd.
in ieder geval alvast bedankt. denk dat ik wel weer een stapje dichterbij ben.

groet,

Ronald
 
Zeker, prima site veel info en ook prettig......in het Nederlands.
 
Beste alle,

ondanks de hulp van Edmoor kom ik er niet uit. wel heb ik nu een Arraý gemaakt die alle diensten inleest maar het lukt me niet om een bezetting van de dag over te zetten zodat er een rijtje komt met dagdiensten ( B,C, of d dienst, daaronder een rijtje met de avonddiensten code N of P en als laatste een rijtje met de nachten W.

graag tips en advies.

alvast bedankt.

Ronald
 

Bijlagen

  • Rooster.xlsm
    50,5 KB · Weergaven: 41
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan