• 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.

Namen definieren met behulp van een array

Status
Niet open voor verdere reacties.

ErikdV

Gebruiker
Lid geworden
16 jun 2011
Berichten
81
Ik heb een werkblad dat een testscript bevat.
Elke rij bevat een testgebeurtenis en in kolom F wordt door de tester een resultaatcode gezet.

Onder deze rijen staat een scheidingsrij met daarin een tekst.
Daaronder staat een overzicht met de totalen van de diverse resultaatcodes.

Het aantal testgebeurtenissen is wisselend, dus zoek ik naar de tekst in de scheidingsrij en zet de gevonden rij in de variabele "beginrij"
Het rijnummer van de totalen is dan beginrij + 1 enz.
Voor elke cel met een totaal wil ik een naam definieren, die ik later weer kan gebruiken bij een totaaloverzicht.

Ik kan dat voor elke naam afzonderlijk doen, maar dan wordt mijn script bij inmiddels 15 namen erg lang.
Daarom wil ik dit doen met een array.
Daarvoor heb ik volgend script.
Sub TEST_ARRAY_MAAKNAMEN()

tabnr = 2
Str_tabnr = CStr(tabnr)
Sheets(Str_tabnr).Select

'zoeken naar tekst in scheidingsrij
With Columns(1)
Set c = .Find("NIET VERWIJDEREN", LookIn:=xlValues)
If Not c Is Nothing Then
beginrij = c.Row
End If
End With

'Kolom met resultaatcodes
Dim rckolom As Integer
rckolom = 6

'rijnamen voor totalen
'LET OP: ze hoeven niet direct onder elkaar te staan.
tot_rc0_rij = beginrij + 1
tot_rc1_rij = beginrij + 3
tot_rc2_rij = beginrij + 4
tot_rc3_rij = beginrij + 6

rijX = "_rij"

Dim NamenX
Dim NamenrijX As Variant
NamenX = Array("tot_rc0", "tot_rc1", "tot_rc2", "tot_rc3)
NamenrijX = Array("")

' Array aanmaken met de rijnamen (NamenrijX)
ReDim Preserve NamenrijX(Aantal_NamenX) 'De array net zo groot maken als het aantal namen in NamenX

'array vullen
For y = 0 To Aantal_NamenX
NamenrijX(y) = NamenX(y) & rijX
Next

'Namen aanmaken
verwijzing1 = "='"
verwijzing2 = "'!R"
verwijzing3 = "C"
ap = """"
For y = LBound(NamenX) To UBound(NamenX)
verwijzing = verwijzing1 & tabnr & verwijzing2 & NamenrijX(y) & verwijzing3 & rckolom
ActiveWorkbook.Names.Add Name:=naam, RefersToR1C1:=verwijzing​
Next
End Sub

Ik wil in de verwijzing de waarde van de variabele XXX_rij zien staan, maar ik krijg nu alleen de naam van de variabele die immers in de array staat.

Is er een simpeler manier om dit op te lossen?
 
namen definieren met multidimensionale array

IK heb het opgelost met een 2-dimensionale array.
dimensie 1: naam
dimensie 2: rijnummer

Helaas kost het wel veel moeite om de complete array te definieren en te vullen, maar het toont wel een stuk overzichtelijker
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan