Range te groot?

Status
Niet open voor verdere reacties.

the goose

Gebruiker
Lid geworden
15 feb 2007
Berichten
86
Hallo iedereen

Ik probeer de trend te berekenen van een dataset (range "Sales"). Wanneer ik een range selecteer waarvan de laatste cel voorbij kolom IU (=255ste kolom) ligt, krijg ik een #value! return waarde. Ook indien de range minder dan 255 waarden bevat maar voorbij kolom IV ligt (bv. range JB1:JZ1) krijgt ik een #value! waarde.

De range "Sales" wordt als parameter aan een UDF gegeven, die dit op zijn beurt doorgeeft aan een andere UDF.

Hoe kan ik dit probleem omzeilen?

Code:
Function calc_Presence_Seasonality(Sales As Range, seasonLength As Integer) As String

...

'Calculate slopeTrend
slopeTrend = calc_Trend(Sales, firstBucket, totalBuckets, usedBuckets, averageTime, averageSales)

...

End Function

Bedankt voor jullie hulp.

Vriendelijke groeten
The goose
 
Laatst bewerkt:
Hoe ziet je aanroep van calc_Presence_Seasonality er in de betreffende cel uit?
 
Dag Edmoor

Dit werkt bv. in Excel:

Code:
=calc_Presence_Seasonality(A5:Z5,12)
=calc_Presence_Seasonality(JU5:JZ5,12)
=calc_Presence_Seasonality(A5:IU5,12)
=calc_Presence_Seasonality(B5:IV5,12)

Dit werkt niet:

Code:
=calc_Presence_Seasonality(A5:IV5,12)

Correctie in mijn eerste bericht: blijkbaar werkt het wel wanneer ik een range selecteer buiten de 255ste kolom. Het probleem stelt zich dus alleen als ik een range selecteer van meer dan 255 cellen, eender waar in de sheet.

Vriendelijke groeten
The goose
 
Werkt bij mij in Office 2010 prima. Ik gebruik wel een ; waar jij een , hebt staan. Maar dat kan een taal verschil zijn.
 
Hallo Edmoor

U heeft gelijk. Ik heb ook net even iets simpels geprobeerd en dit blijkt te werken ... Er zat dus een fout in mijn originele code.

Om de averageTime te berekenen gebruikte ik volgende functie:

Code:
Private Function calc_Avg_Time(firstBucket As Integer, totalBuckets As Integer, usedBuckets As Integer) As Double

Dim averageTime As Double
Dim totalTime As Integer

averageTime = 0
totalTime = 0

For i = firstBucket To totalBuckets
    totalTime = totalTime + i
Next i
    
averageTime = totalTime / usedBuckets

calc_Avg_Time = averageTime

End Function

Door het grote aantal cellen in de range moet ik het datatype van totalTime echter wijzigen naar Long:

Code:
Dim totalTime As Long

Bedankt, ik was me al suf aan het zoeken waarom ik geen range groter dan 255 cellen kon doorgeven... :thumb:

Vriendelijke groeten
The goose
 
Ok dan. En zeg maar jij hoor ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan