Gå til innhold

VBA i Excel: Kalle opp prosedyre ved celleendring

Featured Replies

Skrevet

Jeg har en macro jeg ønsker skal kjøres hver gang en celle forandres i Excel. Innholdet i macroen er klar, men der det noen som vet hvordan jeg kan fikse det slik at macroen kalles opp ved forandring i cellene?

 

Har "sett_farge()" som macro-navn

Skrevet
  • Forfatter
Har du prøvd denne?

Private Sub Worksheet_Change(ByVal Target As Range)
   sett_farge()
End Sub

 

Før jeg postet prøvde jeg

Private Sub Worksheet_Change()
   (kode her)
End Sub

 

Men det trigget ingen ting... - og matematiske beregninger i selve excel-arket er satt til å beregne hver gang en endring foretas i arket.

Skrevet

hmm, jeg bare testa :

Private Sub Worksheet_Change(ByVal Target As Range)
   MsgBox "Hei"
End Sub

 

og fikk en irriterende meldingsboks hvor det stod "Hei" hver gang jeg flytta fokus fra en celle..

 

Så det var litt rart at det ikke funka hos deg. Kjører Excel 2008 vel og merke..

Skrevet

Uten at jeg har noen som helst kunnskap i VBA, så antar jeg at Target er et objekt som refererer til hvilke(n) celle® som blir manipulert, som du eventuelt kan gjøre noe med, hvilket ikke er nødvendig i ditt tilfelle antar jeg.

Skrevet
  • Forfatter

Hehe det passer faktisk utmerket. Opplegget er at jeg skal få en linje (row) til automatisk å skifte bakgrunnsfarge basert på innholdet i én av cellene i raden. Videre skal dette arket brukes av flere, så for å sørge for at ingen er for kreative med farger vil makroen også sørge for at de rette kolonnene har rett skriftfarge, o.l.

 

Nå ser det faktisk ut til at det har begynt å fungere! Vakkert! Takk for hjelpen! Jeg brukte Worksheet_Calculate() og det funket dårlig.

 

Vet du forresten hva som er forskjellen om man bruker Private eller ikke før Sub?

Skrevet
Hehe det passer faktisk utmerket. Opplegget er at jeg skal få en linje (row) til automatisk å skifte bakgrunnsfarge basert på innholdet i én av cellene i raden. Videre skal dette arket brukes av flere' date=' så for å sørge for at ingen er for kreative med farger vil makroen også sørge for at de rette kolonnene har rett skriftfarge, o.l.

 

Nå ser det faktisk ut til at det har begynt å fungere! Vakkert! Takk for hjelpen! Jeg brukte Worksheet_Calculate() og det funket dårlig.

 

Vet du forresten hva som er forskjellen om man bruker Private eller ikke før Sub? [/quote']

 

Ref : Jeg har også Excel 2007. 2008 finnes vel ikke :P

Bra det funka!

 

Ved å ha private foran sub, så betyr dette at denne koden kun er tilgjengelig innenfor det "scopet" du er i. Dvs. at du ikke kan kalle Worksheet_change() fra andre worksheets/ark.

 

En tommelfingerregel er å alltid ha Private foran med mindre du har en hellsikes god grunn til å gjøre funksjonene/sub'ene globale ;)

 

(en sub er en null-funksjon som ikke returnerer noe, det samme som en "void" i C-verdenen)

Skrevet

Kanskje litt off-topic, men... Husk at du ikke nødvendigvis trenger å programmere i VBA dersom du ønsker å endre farger på celler ut fra verdier. Du kan, i de fleste tilfeller, bruke funksjonen Conditional Formatting (betinget formatering) i Excel.

Skrevet
  • Forfatter

Ja, men vil du da få justert bakgrunnsfargen for hele linjen og ikke bare for cellen verdien befinner seg i?

 

Forenklet eksempel: Hvis man har en liste med kolonnene "OPPGAVE", "ANSVAR" og "STATUS" så vil jeg at alle cellene i hver rad skal være farget med ulike farger basert på hva verdien er i "STATUS" for hver rad... slik at grønn bakgrunnsfarge betyr complete oppgave og rød betyr kansellert...

 

Skrevet
  • Forfatter

Stilig! Denne visste jeg ikke om - men jeg får det kun til å fungere når det er tallverdier som er "condition" for formattering og jeg får kun valgt tre forskjellige conditioned formatting pr celle og jeg trenger 4-5. I tillegg skal formatteringen basere seg på tekst-koder. Fortsetter å prøve ut om jeg kan bruke det for å gjør det enklere...

 

 

- da ser det ut til at Visual Basic har løst en rekke problemer og gitt nye muligheter jeg ikke hadde tenkt på...

 

Takk for hjelpen til dere begge for tips, David og Ishtiaq!

Bli med i diskusjonen!

Du kan poste innlegg nå og registrere deg senere. Hvis du har en brukerkonto kan du logge inn nå for å poste med din egen konto.

Gjest
Skriv svar til emnet …