|
Noen enkle knep
|
|
Du kan finne ut ganske mye om hvordan Excel og Visual Basic fungerer sammen
ved å registrere noen enkle inntastinger og deretter studere koden som
er generert.
|
Slik ser det ut nå du merker cellene A1 - B4 på arket:
Range("A1:B4").Select
|
Slik ser det ut nå du først utvelger ark 'Ark2', og så
merker cellene A1 - B4 på ark 'Ark2':
Sheets("Ark2").Select
Range("A1:B4").Select
|
Slik ser det ut nå du legger verdien 1.23 inn i cellen A1 (legg merke til
at du ikke trenger å merke cellen -- koden din blir raskere og elegantere
dersom du dropper cellemerkingen):
Range("A1").Value = 1.23
Nå har du all grunn til å sukke dypt -- i makro-programmering
er nemlig desimal-skilletegnet ikke lenger en komma, som i selve
Excel-arkene! Og hvis du synes at dette er jo ganske håpløst,
så har du rett i det.
Hvis du ikke vil droppe cellemerkingen, så blir koden
som følger:
Range("A1").Select
ActiveCell.Value = 1.23
|
Slik legger du inn samme verdien i flere celler på en gang:
Range("C1:D5").Value = 1.23
|
Slik gjør du det når du ønsker at makroen skal gjøre noe
med et cellområde som du har markert på forhand, men som vil ikke
være kjent på forhand:
With Selection.(her kommer en presisering)
... (her kommer din kode)
End With
For eksempel, denne makroen vil fargelegge bakgrunnen i alt som er selektert:
Sub Makro6()
With Selection.Interior
.ColorIndex = 3
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
End Sub
|
Slik ser det ut nå du registrerer formelen (B2-B1)/(A2-A1) inn i cellen C1:
Range("C1").FormulaR1C1 = "=(R[1]C[-1]-RC[-1])/(R[1]C[-2]-RC[-2])"
Du ser at cellene er her referert relativ til cellen C1. Koden sier:
Vi har utvalgt celle C1 ("Range" er satt til C1).
Formel som er nå definert gjelder cellen i rad 1 og (c)olonne 1,
sett fra cellen som vi har utvalgt, dvs. celle C1.
|
|
Selve formelen gjenspeiler det som er registrert; det som er kryptisk er
referansene til cellene. Referansen tin celle B2 fungerer som følger:
Utifra cellen som formelen gjelder, se på cellen som er
i neste rad og samtidig en kolonne til venstre (R[1]C[-1] = som er likebetydende
med B2, sett fra C1).
|
|
Referansen til B1 fungerer som følger: Utifra cellen som formelen
gjelder, se på cellen som er i samme rad og samtidig en kolonne til venstre
(RC[-1] = som er likebetydende med B1, sett fra C1; R er det samme som R[0] her;
index 0 skrives tydeligvis ikke).
|
|
Kan du se hvordan A1 og A2 er referert til?
|
|
Kan du nå ane hvordan Excel klarer å kopiere en slik formel nedover
i en kolonne og gjøre "alt riktig", dvs. oppdatere cellereferansene på
korrekt måte?
|
|
Heldigvis er det sjeldent at en formel blir til de grader vanskelig å
lese.
|