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

ranges in VBA

Status
Niet open voor verdere reacties.

nobody11

Gebruiker
Lid geworden
20 dec 2007
Berichten
552
ik zit al een heel tijd te sukkelen met een stukje code. heb een eenvoudige versie hier gezet..

ik heb 2 ranges gedefinieerd (hier a en b), en wil in een output range het verschil tussen a en 2*b hebben, maar dit luikt me nog niet helemaal , dit is mijn code momenteel: (deze code lijkt mss raar, maar het is een vereenvoudigde versie)


Code:
sub tes()
a =range("A1:A4")
for each c in a
verschil = c- 2*c.offset(0,1)      'in B1:B4 staat de waarde die hij moet optellen (en maal 2 vermenigvuldigen)

range("G1:G4").value = verschil 

(of kan ik dit stukje mss vervangen door range("G1").paste (zodat ik geen vaste output range moet geven


ik zou dus graag hebben nu dat VBA "verschil" als een range ziet.. en dat lukt niet mijn mijn code

iemand suggestie?
 
Laatst bewerkt:
dit stukje code werkt ook niet? wat doe ik fout?
ik heb deze code erin gezet om te zien of die offest werkt.. maar dat doet ie niet?


'stockreturn is een range die ik heb gedefinieerd
Code:
marketmodel = Range("E2").Value     'E2 bevat een gewone scalair
 For Each c In Range("C111:C10000")  
    If Abs(c.Value) > Range("E1").Value Then 
 stockreturn = Range(Cells(c.Row - 1, c.Column - 1), Cells(c.Row - marketmodel, c.Column - 1))
 For Each c1 In stockreturn
    MsgBox c1.Offset(0, 0)

stockreturn is zeker een goed gedefinieerde range (andere bewerkingen op die range lukken)
 
Hallo nobody11'

Is dit misschien waar je naar op zoek bent?
Code:
Sub test()

    For Each c In [A1:A4]
        If c.Value <> "" Then
            c.Offset(, 6) = c.Value - 2 * c.Offset(, 1)
        End If
    Next

End Sub
Met vr gr
Jack
 
Laatst bewerkt:
Lussen zijn niet nodig.

Code:
Sub test()
    [A1:A4].Offset(, 6).Formula = "=RC[-6]-2*RC[-5]"
End Sub

Wigi
 
Lussen zijn niet nodig.

Code:
Sub test()
    [A1:A4].Offset(, 6).Formula = "=RC[-6]-2*RC[-5]"
End Sub

Wigi


bedankt iedereen!!

@Wigi,


ik heb het eens geprobeerd met een eigen gedefinieerde range (want die moet kunnen verschlilen), en daar doet hij het precies niet.. ik moet er wel bij zeggen dat het aantal kolommen en rows dat ik offset beide een variabele is

de range ziet er bv zo uit:

Code:
 rangeX = Range(Cells(c.Row - 1, c.Column - 1), Cells(c.Row - marketmodel, c.Column - 1))

met een msgbox kan ik alle elementen van die range correct laten verschijnen, dus hij herkent zeker de range.. alleen bewerkingen op die range lukken nog niet precies..

nadien doe ik dan bv:

Code:
rangeX.Offset(, kolom - 2).Formula = "=RC[-(kolom-2)]-alpha-beta*RC[-(kolom-6)]"

en kolom is een scalair, alpha en beta ook ..
 
Laatst bewerkt:
Het probleem situeert zich bij het definieren van de range rangeX bv.. hij erkent elk apart element (getest via msgbox), maar een bewerking erop doen, dan ziet hij het precies niet als range.. wat doe ik fout?

Code:
 For Each c In Range("C111:C10000")  
    If Abs(c.Value) > Range("E1").Value Then 
    On Error Resume Next
    n = n + 1  
    rangeX= Range(Cells(c.Row - 1, c.Column - 1), Cells(c.Row - range("E2").value, c.Column - 1))

for each c1 in rangeX [COLOR="Red"]als ik dit er in zet, dan geef hij elk element correct weer [/COLOR]
msgbox c1 [COLOR="red"]idem[/COLOR]
     
    rangeY = Range(Cells(c.Row - 1, c.Column - 2), Cells(c.Row - range("E2").value, c.Column - 2))

ik zou graag de volgende bewerking hebben op elk element van de 2 ranges

(en dit zou E4-2 kolommen van range Y moeten verschijnen..

rangeX - alpha - beta*rangeY (waarbij alpha en beta variabelen gedefinieerd in VBA, dan zal de code van Wigi met ".formula" niet werken vrees ik :( )


hoe kan ik dit doen?



bedankt!!
 
Laatst bewerkt:
Zoals al duizenden malen op het forum een Range gebruikt werd:

Code:
Dim r As Range
[B][U]Set[/U][/B] r = ...

Wigi
 
het lukt me langs geen kanten.. wat doe ik fout? dit is een stukje code

Code:
dim stockreturn as range
dim marketreturn as range
dim excessreturn as range

Set stockreturn = Range(Cells(c.Row - 1, c.Column - 1), Cells(c.Row - marketmodel, c.Column - 1))
    
    Set marketreturn = Range(Cells(c.Row - 1, c.Column - 2), Cells(c.Row - marketmodel, c.Column - 2))   
    
      
    
    
    alpha = Application.WorksheetFunction.Intercept(stockreturn, marketreturn)
    beta = Application.WorksheetFunction.Slope(stockreturn, marketreturn)

'ik wil hier een variabele range maken "excessreturn" met de oplossing.. nadien kan ik die dan plakken waar ik wil..

set excessreturn = stockreturn - alpha -beta*marketreturn 
'(dit moet gelden voor elk element in de range stockreturn / marketreturn (zelfde dimentie), alpha en beta zijn constanten..

nadien zou ik deze output moeten plakken in een nog te bepalen range (bv range "M1:M10").. iemand suggesties hoe ik dit kan??
 
Laatst bewerkt:
het lukt me langs geen kanten.. wat doe ik fout? dit is een stukje code

Code:
dim stockreturn as range
dim marketreturn as range
dim excessreturn as range

Set stockreturn = Range(Cells(c.Row - 1, c.Column - 1), Cells(c.Row - [B][COLOR="Red"]marketmodel[/COLOR][/B], c.Column - 1))
    
    Set marketreturn = Range(Cells(c.Row - 1, c.Column - 2), Cells(c.Row - [COLOR="Red"][B]marketmodel[/B][/COLOR], c.Column - 2))   
    
      
    
    
    alpha = Application.WorksheetFunction.Intercept(stockreturn, marketreturn)
    beta = Application.WorksheetFunction.Slope(stockreturn, marketreturn)

'ik wil hier een variabele range maken "excessreturn" met de oplossing.. nadien kan ik die dan plakken waar ik wil..

set excessreturn = stockreturn - alpha -beta*marketreturn 
'(dit moet gelden voor elk element in de range stockreturn / marketreturn (zelfde dimentie), alpha en beta zijn constanten..

nadien zou ik deze output moeten plakken in een nog te bepalen range (bv range "M1:M10").. iemand suggesties hoe ik dit kan??

Wat is marketmodel?
Dit staat niet gedefinieerd, dus weet VBA niet wat het hiermee moet doen.


Met vriendelijke groet,


Roncancio
 
Waar staat dat in de code?
Welke foutmelding krijg je dan?

Met vriendelijke groet,


Roncancio

ik krijg geen foutmelding , maar als ik de range wil plakken, dan krijg ik een lege range.. hij wil dus geen bewerkingen doen met de ranges.. wat wel lukt bv is het volgende:

Code:
stockmarket.offset(,2).value = stockmarket
maar wat dan weer niet lukt is:

Code:
stockmarket.offset(,2).value = stockmarket *alpha (of maal 2)
 
Dat gaat zo niet lukken.

Zet een formule in dat tweede bereik. Bvb.

Code:
Range("M1:M10").Formula = "=RC[-1]*2"
 
Dat gaat zo niet lukken.

Zet een formule in dat tweede bereik. Bvb.

Code:
Range("M1:M10").Formula = "=RC[-1]*2"


bedankt, maar het probleem met deze oplossing is volgens mij dat je dan geen variabele die je in VBA hebt geformuleerd kunt verwerken in die formule.. want in excel zellf is die variabele dan niet gekend.. hoe los ik dit op?
 
Je ziet dat de formule in wezen gewoon tekst is, vandaar dat het tussen " " staat.

Tekst kan je opknippen. M.a.w., dit is exact hetzelfde:

Code:
EenGetal = 2
Range("M1:M10").Formula = "=RC[-1]*" & EenGetal
 
Je ziet dat de formule in wezen gewoon tekst is, vandaar dat het tussen " " staat.

Tekst kan je opknippen. M.a.w., dit is exact hetzelfde:

Code:
EenGetal = 2
Range("M1:M10").Formula = "=RC[-1]*" & EenGetal

bedankt wim..
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan