Avatar billede jensen363 Forsker
25. juli 2006 - 14:38 Der er 11 kommentarer og
3 løsninger

Opret betinget formatéring med makro

Case :

En bruger bestiller en rapport i Excel ( fra SAP ), indeholdende en række data i tabelform, som denne skal tage stilling til validiteten af. Er der fejl, skal dette rettes, men jeg vil gerne have en markering i cellen af ( baggrundsfarve ), at brugeren har rettet i data for den pågældende celle.

For hver gang brugeren bestiller en rapport, nulstilles alle celler/rækker i regnearket, så det skal kunne oprettes med en makro eller lignende efter rapportbestilling.

Nogen gode idéer ????
Avatar billede excelent Ekspert
25. juli 2006 - 15:07 #1
Følgende kode i Arkets kodemodul ændrer baggrundsfarve til grøn
hvis der ændres i en celle i området A1:AV1000

Farverne kunne evt. resettes med en knap

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:AV1000")) Is Nothing Then
  Exit Sub
Else
Target.Interior.ColorIndex = 4
End If
End Sub
Avatar billede jensen363 Forsker
25. juli 2006 - 18:50 #2
excelent > den er lidt for følsom ... efter min mening, den skal kun reagere hvis der reelt sker ændring i feltet, eksempelvis ikke hvis brugeren kun har aktiveret cellen for at se decimaler ... er der en ande metode ?
Avatar billede excelent Ekspert
26. juli 2006 - 09:58 #3
Følgende 2 makroer forudsætter du har et ark med navn Rapport
samt et ark med navn Kopi.

Kopier() kopierer indholdet af Rapport-arket til Kopi-arket
Marker() farver celler i Rapport-arket som er ændret

Kopi-arket kan evt. skjules

Sub kopier()
Sheets("Kopi").Activate
Range(Range("A1"), ActiveCell.SpecialCells(xlLastCell)).Delete
Sheets("Rapport").Activate
Range(Range("A1"), ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Interior.ColorIndex = xlNone
Selection.Copy Destination:=Sheets("Kopi").Range("A1")
Range("A1").Select
End Sub


Sub Marker()
Dim r, c, r1, c1
Sheets("Rapport").Activate
Range(Range("A1"), ActiveCell.SpecialCells(xlLastCell)).Select
r = Selection.Rows.Count: c = Selection.Columns.Count: Range("A1").Select
For r1 = 1 To r
For c1 = 1 To c
If Sheets("Rapport").Cells(r1, c1) <> Sheets("Kopi").Cells(r1, c1) Then
Sheets("Rapport").Cells(r1, c1).Interior.ColorIndex = 15
End If
Next
Next
End Sub
Avatar billede supertekst Ekspert
29. juli 2006 - 17:50 #4
Evt. alternativ:

Dim preV
Private Sub Worksheet_Change(ByVal Target As Range)
    If preV <> Target.Value Then
        Target.Interior.ColorIndex = 4
    End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    preV = ActiveCell.Value
End Sub
Avatar billede excelent Ekspert
29. juli 2006 - 18:09 #5
Tilmed et godt alternativ, godt gået supertekst
Avatar billede supertekst Ekspert
22. august 2006 - 14:28 #6
Hej jensen363 ... skulle dette ikke afsluttes?
Avatar billede jensen363 Forsker
22. august 2006 - 14:40 #7
Sorry ... er lige startet efter ferien, så jeg har ikke testet nogle af metoderne endnu ... hvad er der afgørende forskel mellem de to forslag ?
Avatar billede supertekst Ekspert
22. august 2006 - 14:52 #8
OK - tilgivet - prøv dem begge - det sidstfremsendte er noget mere kompakt...
Avatar billede jensen363 Forsker
22. august 2006 - 19:17 #9
Supertekst > Dit forslag virker fornuftigt, men koden fejler når jeg vha. en anden makro beriger arket med nye data.
Avatar billede kabbak Professor
22. august 2006 - 22:34 #10
Du skal så de automatiske makroer fra når du opdatere data, så burde subertekst`s kode virke.
det gør du sådan

Application.EnableEvents = False
' Din koder når du henter nye data
Application.EnableEvents = True

Hvis det skulle ske at din kode skulle gå i fejl engang, så den ikke udfører den sidste linie, så lav en makro der kan genstarte de automatiske makroer



Public Sub StartAutomatiskeMakroer()
  Application.EnableEvents = True
End Sub
Avatar billede jensen363 Forsker
23. august 2006 - 09:22 #11
Kabbak > takker for det sidste input ...

I har alle tre givet brugbare input, og fortjener alle point ... læg venligst svar, så fordeler jeg
Avatar billede supertekst Ekspert
23. august 2006 - 09:36 #12
OK & tak...
Avatar billede kabbak Professor
23. august 2006 - 11:16 #13
et svar ;-))
Avatar billede excelent Ekspert
23. august 2006 - 19:24 #14
ok :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester