Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Forenkling af kodeskrivningen i en makro ??

3 views
Skip to first unread message

Is

unread,
Apr 20, 2012, 5:18:23 PM4/20/12
to
Hej

Jeg er ved at lave en makro/hændelse "ved klik" på en knap, hvorved det
beregnes og flyttes data til udvalgte felter.

men i takt med at jeg stiler større og større krav med bla hvis dit og dat.

det er delt op efter forskellige målere og ca 12 aflæsninger pr måler
bliver anvendt - så mange ting gentager sig - det rykker bare en kolonne.

et eksempel:
-----
[GrafData!J79] = ([Arkiv!J5] - [Arkiv!K5]) / ([Arkiv!J3] -
[Arkiv!K3]) / 24
[GrafData!J80] = ([Arkiv!J48] - [Arkiv!K48]) / ([Arkiv!J3] -
[Arkiv!K3]) / 24

[GrafData!K79] = ([Arkiv!K5] - [Arkiv!L5]) / ([Arkiv!K3] -
[Arkiv!L3]) / 24
[GrafData!K80] = ([Arkiv!K48] - [Arkiv!L48]) / ([Arkiv!K3] -
[Arkiv!L3]) / 24

[GrafData!L79] = ([Arkiv!L5] - [Arkiv!M5]) / ([Arkiv!L3] -
[Arkiv!M3]) / 24
[GrafData!L80] = ([Arkiv!L48] - [Arkiv!M48]) / ([Arkiv!L3] -
[Arkiv!M3]) / 24

[GrafData!M79] = ([Arkiv!M5] - [Arkiv!N5]) / ([Arkiv!M3] -
[Arkiv!N3]) / 24
[GrafData!M80] = ([Arkiv!M48] - [Arkiv!N48]) / ([Arkiv!M3] -
[Arkiv!N3]) / 24

[GrafData!N79] = ([Arkiv!N5] - [Arkiv!O5]) / ([Arkiv!N3] -
[Arkiv!O3]) / 24
[GrafData!N80] = ([Arkiv!N48] - [Arkiv!O48]) / ([Arkiv!N3] -
[Arkiv!O3]) / 24

[GrafData!O79] = ([Arkiv!O5] - [Arkiv!P5]) / ([Arkiv!O3] -
[Arkiv!P3]) / 24
[GrafData!O80] = ([Arkiv!O48] - [Arkiv!P48]) / ([Arkiv!O3] -
[Arkiv!P3]) / 24

[GrafData!P79] = ([Arkiv!P5] - [Arkiv!Q5]) / ([Arkiv!P3] -
[Arkiv!Q3]) / 24
[GrafData!P80] = ([Arkiv!P48] - [Arkiv!Q48]) / ([Arkiv!P3] -
[Arkiv!Q3]) / 24

[GrafData!Q79] = ([Arkiv!Q5] - [Arkiv!R5]) / ([Arkiv!Q3] -
[Arkiv!R3]) / 24
[GrafData!Q80] = ([Arkiv!Q48] - [Arkiv!R48]) / ([Arkiv!Q3] -
[Arkiv!R3]) / 24

[GrafData!R79] = ([Arkiv!R5] - [Arkiv!S5]) / ([Arkiv!R3] -
[Arkiv!S3]) / 24
[GrafData!R80] = ([Arkiv!R48] - [Arkiv!S48]) / ([Arkiv!R3] -
[Arkiv!S3]) / 24

[GrafData!S79] = ([Arkiv!S5] - [Arkiv!T5]) / ([Arkiv!S3] -
[Arkiv!T3]) / 24
[GrafData!S80] = ([Arkiv!S48] - [Arkiv!T48]) / ([Arkiv!S3] -
[Arkiv!T3]) / 24

[GrafData!T79] = ([Arkiv!T5] - [Arkiv!U5]) / ([Arkiv!T3] -
[Arkiv!U3]) / 24
[GrafData!T80] = ([Arkiv!T48] - [Arkiv!U48]) / ([Arkiv!T3] -
[Arkiv!U3]) / 24
----------

lidt forklaring

[Grafdata] 79 & 24 bliver brugt til grafer
[Arkiv] 5 & 48 er måler aflæsninger
[Arkiv] 3 er dato for aflæsningen
/24 er for at få forbrug på time

hvordan kan jeg forenkle det ???

mvh Erik

Hans Terkelsen

unread,
Apr 20, 2012, 8:13:08 PM4/20/12
to

"Is" <eriki...@mail.dk> wrote in message news:4f91d29a$0$293$1472...@news.sunsite.dk...
Hej Erik.
Jeg tror du efterlyser noget a la


For j = 0 To 4
[GrafData!J79].Offset(0, j) = ([Arkiv!J5].Offset(0, j) - [Arkiv!K5].Offset(0, j)) / ([Arkiv!J3].Offset(0, j) -
[Arkiv!K3].Offset(0, j)) / 24
[GrafData!J80].Offset(0, j) = ([Arkiv!J48].Offset(0, j) - [Arkiv!K48].Offset(0, j)) / ([Arkiv!J3].Offset(0, j) -
[Arkiv!K3].Offset(0, j)) / 24
Next


Du kunne også lade Excel producere formlerne med relativ adresse
og så putte hver hele formel i genvejsparenteser i VBA

[GrafData!J79] = [(Arkiv!J5-Arkiv!K5)/(Arkiv!J3-Arkiv!K3)/24]
[GrafData!J80] = [(Arkiv!J48-Arkiv!K48)/(Arkiv!J3-Arkiv!K3)/24]

og de 4 andre tilsvarende sæt formler
Men det ville fylde noget mere...

Her henviser genvejsparenteserne til venstre til et Range,
og genvejsparenteserne til højre siger: Hop ud i Excel og evaluer formlen i [ ]
Formlen skal da være med engelske funktionsnavne, men det betyder jo ikke noget i dette tilfælde.

Hans T.


Is

unread,
Apr 22, 2012, 9:51:20 AM4/22/12
to
Den 21-04-2012 02:13, Hans Terkelsen skrev:
> Hej Erik.
> Jeg tror du efterlyser noget a la
>
>
> For j = 0 To 4
> [GrafData!J79].Offset(0, j) = ([Arkiv!J5].Offset(0, j) -
> [Arkiv!K5].Offset(0, j)) / ([Arkiv!J3].Offset(0, j) -
> [Arkiv!K3].Offset(0, j)) / 24
> [GrafData!J80].Offset(0, j) = ([Arkiv!J48].Offset(0, j) -
> [Arkiv!K48].Offset(0, j)) / ([Arkiv!J3].Offset(0, j) -
> [Arkiv!K3].Offset(0, j)) / 24
> Next
>
>
> Du kunne også lade Excel producere formlerne med relativ adresse
> og så putte hver hele formel i genvejsparenteser i VBA
>
> [GrafData!J79] = [(Arkiv!J5-Arkiv!K5)/(Arkiv!J3-Arkiv!K3)/24]
> [GrafData!J80] = [(Arkiv!J48-Arkiv!K48)/(Arkiv!J3-Arkiv!K3)/24]
>
> og de 4 andre tilsvarende sæt formler
> Men det ville fylde noget mere...
>
> Her henviser genvejsparenteserne til venstre til et Range,
> og genvejsparenteserne til højre siger: Hop ud i Excel og evaluer
> formlen i [ ]
> Formlen skal da være med engelske funktionsnavne, men det betyder jo
> ikke noget i dette tilfælde.
>
> Hans T.
>
>

det ser spændende ud, jeg tror jeg prøver denne her:
For j = 0 To 4
> [GrafData!J79].Offset(0, j) = ([Arkiv!J5].Offset(0, j) -
> [Arkiv!K5].Offset(0, j)) / ([Arkiv!J3].Offset(0, j) -
> [Arkiv!K3].Offset(0, j)) / 24

jeg går ud fra at jeg ved at ændre på (For j = 0 To 4) bestemme hvor
mange gange jeg kan køre beregningen ???

Hvad laver .Offset(0, j) ???

og det med sprog bliver også aktuelt - for jeg skal til at bygge nogle
"hvis" ind for at undgå store negative tal ved målerskift.

mvh Erik

Hans Terkelsen

unread,
Apr 22, 2012, 4:25:31 PM4/22/12
to

"Is" <eriki...@mail.dk> wrote in message news:4f940cd9$0$288$1472...@news.sunsite.dk...
Erik!

Offset VBA kommandoen foroven betyder Forskydning,
og [J79].Offset(0,1), for eksempel, er det samme som [K79]

Svarer til FORSKYDNING()/engelskOFFSET() ude i Excel

Hvad angår det med engelske funktionsnavne,
så kan du enten spørge her,

eller, hvis en Excelformel i A1 skal skaffes i engelsk udgave:
Skriv formlen i A1, fx =SLÅ.OP(1;1)
Alt+F11 til VBA
Ctrl+G til Immediate eller Debug vinduet
Skriv deri ?[a1].formula og tryk Enter
Du får resultatet, =LOOKUP(1,1), lige til at kopiere.
Spørgsmålstegnet i ?[a1].formula printer svaret ud på næste linje.

Jeg er lidt i tvivl om hvor meget bøvl du vil få med USkomma/DKsemikolon.
Prøv hvad der virker.

Hans T.

0 new messages