• 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 invullen met een variabel bereik

Status
Niet open voor verdere reacties.

Michiel Karel

Gebruiker
Lid geworden
14 feb 2007
Berichten
49
Ik zou graag het volgende aan jullie willen vragen:

hoe zorg ik ervoor dat een bereik (g12:g148) automatisch de waarden veranderd als gevolg van het maken van een deling tussen de waarden in de cellen e12:e148, en c12:c148 ?

Dit moet ik als percentage weergeven op 2 draaitabel kolommen. het is dus de bedoeling dat als ik m'n draaitabel inkort / vergroot, de cellen binnen het maximale bereik g12:g148 blanco / ingevuld weergegeven worden.

Ik had zelf dit bedacht:

If oAw.ActiveSheet.Range("e12").Value Is Not Null Then
oAw.ActiveSheet.Range("g12").Value = oAw.ActiveSheet.Range("e12").Value / oAw.ActiveSheet.Range("c12").Value
Else: oAw.ActiveSheet.Range("g12").Value = ""
End If

maar dan zegt access: fout 424 'object vereist'.

ik exporteer namelijk via een uitgebreide exportfunctie een draaitabel naar excel (beter gezegd, ik definieer in access hoe hij er uit ziet, zodat ik niet 20 losse excel bestanden heb).

wie weet hoe ik dit zou kunnen oplossen?
 
Ik kan je iig 2 manieren laten zien. De eerste had je zelf vast ook al bedacht. Maak gewoon altijd het volledige bereik, maar zorg met behulp van een IF functie dat de deling alleen gedaan wordt wanneer er een waarde bestaat:

=IF(e12<>"";e12/c12;"")

De tweede manier is in de macro bepalen hoe groot je bereik is. Dit kan je bijvoorbeeld als volgt doen:
Code:
    'selecteer de bovenste cel van je bereik
Range("c12").Select
'doe een ctrl naar beneden om de laatst beschreven cel te vinden
Selection.End(xlDown).Select
'bepaal het einde van je bereik
Dim einde As Integer
einde = ActiveCell.Row

'vervolgens ga je naar je weg te schrijven bereik
[g12] = "=E12/C12"
Range("G12").Copy
Range("G12:G" & einde).Select
ActiveSheet.Paste

Nu kan deze code vast efficienter, maar het werkt wel.
 
alrighty then! thanks voor de info, ik ga er gelijk mee aan de slag, kijken of het werkt! bedankt maat!
 
bedankt voor jullie reacties jongens. Ik heb tijdens mijn afstudeeropdracht (de afgelopen 4 maanden) geregeld deze site geraadpleegd om hulp en nagenoeg elke keer heb ik een goed antwoord / tips gekregen: Chapeau!

Dit is de uiteindelijke code (voor een ander rapport, dus iets andere range, maar 't idee is het zelfde) is geworden:

With oAw.ActiveSheet.Range("h10:h" & oAw.ActiveSheet.Range("F10").End(xlDown).Row)
.Formula = "=IF(RC[-2]<>"""",RC[-2]/RC[-4],"""")"
.NumberFormat = "0.00%"
End With

En dit werkt nu prima!!

Wat mij betreft kan deze thread op slot :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan