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

Array moet weggeschreven worden naar ActiveSheet?

Status
Niet open voor verdere reacties.

Excelbat

Gebruiker
Lid geworden
23 mrt 2012
Berichten
402
Hi all,

Onderstaande code werkt prima, dus ik wil even geen excelbijlage plaatsen als voorbeeld,
maar ik hoop dat iemand een antwoord uit de losse pols kan verzinnen.

Code:
Sub Spelen()
Dim arr01 As Variant
arr01 = Range("Ledenlijst[[Nummer]:[LinksVier]]")       'Gegevens inlezen vanuit Tabblad

Dim arr02 As Variant
ReDim arr02(1 To 30, 1 To 10)                           'Nieuwe lege array opzetten, 30 rows and 10 columns

 
For x = 1 To UBound(arr01, 1)                               'Hoeveel keer (rijen) moet ik printen

    arr02(5, 2) = arr01(x, 15)                                  'Naam
    arr02(6, 2) = arr01(x, 20)                                  'Straat
    arr02(7, 2) = arr01(x, 21) & "  " & arr01(x, 22)            'Postcode & Plaats
    arr02(11, 2) = "MijnDorp, " & Format(Date, "dd-mm-yyyy")  'Datum brief
    arr02(13, 2) = "Factuurnummer: 2022_" & arr01(x, 14)
    arr02(24, 2) = "Betreft: het lidmaatschap 2021."
    arr02(29, 2) = "Het factuurbedrag bedraagt:"
    arr02(29, 7) = Format(arr01(x, 27), "€ 0.00")

    ThisWorkbook.Sheets("ArraySpel").Range(Cells(1, 1), Cells(UBound(arr02, 1), UBound(arr02, 2))) = arr02          'Array terugzetten naar Worksheet

Next x

End Sub

Hier gaat het echter fout, als sheet "ArraySpel" niet de actieve sheet is:
Code:
ThisWorkbook.Sheets("ArraySpel").Range(Cells(1, 1), Cells(UBound(arr02, 1), UBound(arr02, 2))) = arr02          'Array terugzetten naar Worksheet

Omdat hier op helpmij altijd benadrukt wordt om geen .activate en/of .select te gebruiken, vraag ik mij af, of iemand een andere oplossing heeft.

Greetz/Excelbat
 
Code:
Range(Sheets("ArraySpel").Cells(1, 1), Sheets("ArraySpel").Cells(UBound(arr02, 1), UBound(arr02, 2))) = arr02
of
Code:
Sheets("ArraySpel").Cells(1).resize(30,10) = arr02
 
Laatst bewerkt:
Een array van 30 * 10, waarvan je slechts 7 rijen en 2 kolommen gebruikt ?
Zowel rijen als kolommen kunnen qua hoogte resp. breedte aangepast worden.
 
#3: is nog in ontwerpfase. Voorlopig wil ik even 30 rijen en 10 kolommen hebben.
Het gaat om een brief waarin ik verschillende velden automatisch willen invullen.
Brief heeft 30 regels en 10 kolommen.

Greetz/Excelbat
 
Laatst bewerkt:
#2: Deze krijg ik werkend, en is het dus niet nodig dat "ArraySpel" actief is.

Code:
ThisWorkbook.Worksheets("ArraySpel").Cells(1, 1).Resize(30, 10) = arr02

De andere code die door u gesuggereerd is, krijg ik niet werkend, als "ArraySpel" niet actief is.

Bedankt voor uw hulp.

Meer suggesties zijn welkom.

Greetz/Excelbat
 
#6: Ja, nu werkt het wel.

Uiteraard had ik eerst ook wat gesleuteld aan de code die u eerder gesuggereerd had in #2, maar kreeg het niet werkende.

Many thanks !!!

Greetz/Excelbat
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan