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

Cellen opmaken in ander tabblad via macro

Status
Niet open voor verdere reacties.

rdcoster

Gebruiker
Lid geworden
21 dec 2018
Berichten
5
Ik worstel reeds een paar dagen met het volgende probleem:

In tabblad 3 met naam 'Januari' creëer ik via een macro de formule

Worksheets(jaar(sht - 2)).Cells(7, formadres).Formula = "=SUM(" & Range(Cells(7, formbegin), Cells(7, formeind)).Address(False, False) & ")"

OPMERKING: het tabblad 'Januari' mag niet geopend worden tijdens de handeling

waarin:
jaar(x) een array is jaar = Array(" ", "Januari", "Februari", "Maart",........)
sht --> nummer van het tabblad
formadres --> kolomnummer waar de formule zal staan (op rij 7)
formbegin --> kolomnummer van start-som
formeind --> kolomnummer van eind-som
De formule wordt correct gecreëerd en op de juiste plaats gezet.

Daarna maak ik de formule op naar valuta weergave:
w = kolomnm(formadres)
bereik = w & "7"
Worksheets(jaar(sht - 2)).Cells(7, formadres).NumberFormat = "_-* #,##0 $_-;-* #,##0 $_-;_-* ""-"" $_-;_-@_-"

waarin:
kolomnm(x) een array is kolomnm = Array(" ", "A", "B", "C", "D", "E", "F", "G", "H",....


Maar:
daarna wil ik de formule "samenvoegen en centreren" over de rechtse aangrenzende cel en daarna 'uitslepen' naar de 10 onderliggende cellen.

En dit lukt niet

Graag hulp aub.

Mvg
René
 
René,

Welkom op het forum!

Een voorbeeldbestand geeft de helpers een beter beeld van jouw situatie en levert doorgaans sneller de gewenste oplossing.


Gr.

Sjon
 
ik zou ook liever een voorbeeldje zien dan het zelf na te bouwen, maar er zijn alleszins al een paar eigenaardigheden.
VBA is engelstalig, dus kolomnm lijkt me daar niet aan te voldoen.
Daarnaast die ";" in dat numberformat, dat is ook raar.
 
Dat van die Kolomnm is volgens mij prima toegelicht.
 
Ik ben er mij van bewust dat VBA Engelstalig is, daarom staat ook in mijn formule 'SUM' iplv 'SOM'.
De 'kolomnm' is een eigen variabele naam voor de array waar de kolomnamen ("A","B"...) in staan.
Ik denk dat ik die toch mag noemen zoals ik wil ?

Het numberformat heb ik gegenereerd met 'Opnemen macro'.

Ik zal proberen een beknotte versie te maken en als voorbeeld opsturen.

Mvg
René
 
Als ik het goed begrepen heb tenminste.
Code:
[COLOR=#3E3E3E][FONT=Tahoma][I]Worksheets(jaar(sht - 2)).Cells(7, formadres)[/I][/FONT][/COLOR].resize(11, 2).merge
Al is samenvoegen en centeren een van de slechtste instrumenten voor Vba.
Vroeg of laat kom je weer in de knoei.
 
Laatst bewerkt:
HSV,

OK voor het 'mergen'. Maar dan wel met aanpassing
Worksheets(jaar(sht - 2)).Cells(7, formadres).Resize(1, 2).Merge
.

En dan wil ik deze 'gemergde' cellen doorslepen van lijn 7 tot lijn 31 en daarna omkaderen,
Selection.AutoFill Destination:=Range(Cells(7, formadres), Cells(31, formadres + 1)), Type:=xlFillDefault

maar dan mislukt het terug.
fout_VBA_1.jpg
 
Omdat VenA blijkbaar ongeduldig wacht op de code.... hierbij.

Eerst wat uitleg over het project:
Een instelling voor kinderopvang moet op aanwezigheidslijsten per dag het bedrag invullen voor opgevangen kind.
De ouders betalen op het eind van de week de verlopen weeksom.

Nu tracht ik automatisch blanco formulieren op te maken aan het begin van een werkjaar uitgaande van een 'sjabloon-formulier' dat verborgen zit als 2de tabblad.
Op het 1ste tabblad (Instellingen) kan het jaar gekozen worden.
Als een maand niet eindigt op vrijdag moet de weeksommering vermeld staan na de vrijdag van de volgende maand.

Ik heb dit al perfect werkend MAAR wil van het 'flikkeren' af als de bladen aangemaakt worden.
Dit gebeurt omdat ik de bladen of 'ranges' steeds SELECTEER om een bewerking uit te voeren.

In bijlage een beknopte (slechts voor 3 maanden) versie van het project .
In module 1 de macros --- in module 2 de subroutines.

Voor ervaren Excel-VBA gebruikers zal mijn code misschien raar overkomen, daarom hulp van experts gevraagd.

Mvg
René

Bekijk bijlage test_forum_V3.xlsm
 
Ik denk dat jij het gebruik van dit forum niet begrijpt. Ik wacht nergens ongeduldig op. Als je van het flikkeren af wil dan zal je geen select of activate moeten gebruiken. Je kan ook eens kijken wat je met application.screenupdating kan.
 
Code:
    With Worksheets(jaar(sht - 2)).Cells(7, formadres).Resize(1, 2)
        .Merge                                                       '
        .Copy
        .Offset(1).Resize(24, 2).PasteSpecial Paste:=xlPasteFormats
    End With
je bent eigenlijk al vrij ver gevorderd, maar zou het niet gemakkelijker zijn om ipv 12 tabbladen, 1 per maand, gewoon alles op 1 blad te zetten.
Horizontaal, een volledig jaar.
Dan kan je vrij gemakkelijk 1 week aanmaken en dat dan 52 keer naar rechts kopieren.
Daarna maak je 12 vertikale pagina-eindes aan, ééntje na iedere maand en dan kan je ook maand per maand afdrukken.
Dat zal tig keer gemakkelijker werken, minder kans op fouten bij de formules etc.
Hoe doe je dat dan eigenlijk als de zaterdag de laatste dag van de maand en de zondag de 1e dag van de volgende maand is ?
 
Dank zij jullie tips (en ook van anderen) ben ik tot volgend resultaat gekomen (zie Excel bestand in bijlage).

Aan cow18:
zoals je ziet komen de week-sommeringen steeds onder een "za" (zaterdag) te staan, ook als deze op de laatste dag van de maand valt. Dan wordt de "zo" (zondag) van de volgende maand grijs gekleurd.
Ik zal bij gelegenheid ook nog eens een versie maken met alle maanden op 1 tabblad.

Dank aan allen voor de tips.

Mvg
René
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan