Variabele Range in LINEST

Status
Niet open voor verdere reacties.

VivianeVT93

Nieuwe gebruiker
Lid geworden
7 jun 2017
Berichten
1
Hallo,

Ik ben pas net begonnen met programmeren in VBA en snap niet zo goed waarom het onderstaande mis gaat.

Ik wil in de onderstaande code uiteindelijk een FOR loop laten lopen over de waardes st1 en et1. Hierom wil ik dus dat ik deze variabele kan gebruiken om de range van de LINEST functie te bepalen. Bij de bovenste LINEST functie doet hij wat hij moet doen (hij neem de range Y=B6:B57 en X=A6:A57) en geeft de juiste waardes als output. Maar zodra ik de rijen wil meegeven via st1 en et1 geeft hij als output alleen maar #NAME. De onderste drie manieren lijken mij allemaal te moeten werken, maar geven allemaal geen output.

Code:
Private Sub CommandButton1_Click()
    
    Dim st1 As Long 'Start of trend 1
    Dim et1 As Long 'End of trend 1
    Dim rY As Range
    Dim rX As Range

    st1 = 1 'To be given by the for loop
    et1 = 52 'To be given by the for loop
    Set rX = Range("A" & (stl + 6) & ":A" & (et1 + 5))
    Set rY = Range("B" & (stl + 6) & ":B" & (et1 + 5))

    
    Range("H6:I10").Select
    Selection.clearcontents
    
    ActiveCell.FormulaR1C1 = "=LINEST(rY,rX,TRUE,TRUE)"
    Range("H6:I10").Select
    Selection.FormulaArray = "=LINEST(INDIRECT(""B""&6&"":B""&57),INDIRECT(""A""&6&"":A""&57),TRUE,TRUE)"
    'Selection.FormulaArray = "=LINEST(INDIRECT(""B""&(st1+6)&"":B""&(et1+5)),INDIRECT(""A""&(st1+6)&"":A""&(et1+5)),TRUE,TRUE)"
    'Selection.FormulaArray = "=LINEST(rY,rX,TRUE,TRUE)"
    'Selection.FormulaArray = "=LINEST(INDIRECT(rY),INDIRECT(rX),TRUE,TRUE)"

End Sub
 
VivianeVT93,

Je stelt dat hij de juiste range neemt Y=B6:B57 maar dit klopt niet, hij zou als range B7:B57 (6+1) moeten nemen.
En hier vind je gelijk je probleem als variabele gebruik je stl in plaats van st1 en aangezien stl niet is gedefinieerd wijst hij hier
de waarde 0 aan toe.

Stel het definiëren van variabelen verplicht, zie de instructie "Option Explicit"

Veel Succes.
 
4 van vele mogelijkheden

Code:
Sub M_snb()
   ActiveCell = "=linest(A6:A57,B6:B57)"
   
   c00 = "A6:A57"
   c01 = "B6:B57"
   ActiveCell = "=linest(" & c00 & "," & c01 & ")"

   c00 = Range("A6:A57").Address
   c01 = Range("B6:B57").Address
   ActiveCell = "=linest(" & c00 & "," & c01 & ")"

   Set sn = Range("A6:B57")
   ActiveCell = "=linest(" & sn.Columns(1).Address & "," & sn.Columns(2).Address & ")"
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan