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

Gegevens uit wisselende tabbladen halen

Status
Niet open voor verdere reacties.

martin079

Nieuwe gebruiker
Lid geworden
6 jun 2018
Berichten
2
Hi,

Ter inleiding:
Ik draai diverse evenementen. Hier worden kassa's gebruikt, de verdeling van de kassa's is bij ieder evenement anders. Ik wil graag op een totaaloverzicht per afdeling zien wat de totaalomzet van de kassa's van die afdeling is. Dat kan dus het ene evenement kassa 1-10 zijn en het andere evenement kassa 3-9 (bijvoorbeeld).

Nu heb ik een formule gevonden:
=SOMSHEETS($C10;$D10;E$5)
Waarbij $C10 in dit geval staat voor het eerste kassanummer in de reeks, $D10 voor het laatste kassanummer in de reeks en E$5 voor de cel waarin de omzetgegevens staan op de betreffende tabbladen. (ieder tabblad vertegenwoordigd een kassa, en op elk tabblad is het dezelfde cel waar de gegevens uit gehaald moeten worden).

Om deze formule te laten werken heb ik in vba moeten toevoegen:
Public Function SomSheets(sh1 As String, sh2 As String, cl As String) As Double
Dim a As Integer, x As Integer, y As Integer
x = Sheets(sh1).Index
y = Sheets(sh2).Index
SomSheets = 0
For a = x To y
SomSheets = Sheets(a).Range(cl).Value + SomSheets
Next
End Function

Het probleem is, dat de gegevens alleen ververst worden, wanneer ik in 1 van de cellen van de formule ga staan en enter. De gegevens worden dus niet automatisch ingevuld.

Heeft iemand een oplossing voor mij? Wellicht een formule die beter werkt?
 
probeer dit eens bovenaan je UDF:
Code:
Application.Volatile
dus:

Code:
Public Function SomSheets(sh1 As String, sh2 As String, cl As String) As Double
 [COLOR="#FF0000"]Application.Volatile[/COLOR]
 Dim a As Integer, x As Integer, y As Integer
 x = Sheets(sh1).Index
 y = Sheets(sh2).Index
 SomSheets = 0
 For a = x To y
 SomSheets = Sheets(a).Range(cl).Value + SomSheets
 Next
 End Function
 
Laatst bewerkt:
@SjonR: het is gelukt, dank je wel

@VenA: dank voor de link, ik ben nieuw hier, kan ik iets mee. Je geeft aan dat het 'gewoon' met een formule kan. Die was dan uiteraard ook welkom geweest ;-)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan