Forfatter |
Emne Søg Emne funktioner
|
dixib
Bronze bruger
Medlem: 17.Apr.2012
Land: Danmark
Status: Offline
Point: 26
|
Emne: Formatering med VBA Sendt: 17.Apr.2012 kl. 15:28 |
Hej alle Excel-hajer Jeg vil gerne kunne formatere diverse celler i forhold til valget i andre celler. Da jeg har mere end tre valg i den celle, som styrer formateringen, er jeg kommet frem til, at det er nødvendigt at bruge VBA. Det er dog ikke lykkedes mig at finde frem til hvordan (eller kunne få de koder jeg har fundet til at virke). Jeg håber det ud fra nedenstående ark er muligt at forstå, hvad jeg mener. Først og fremmest skal valget i "Type" styre baggrundsfarven i feltet "Name". Hvis det er muligt vil jeg også gerne have at hvis der f.eks. vælges "T1" i "Type" at det ikke kun er baggrundsfarven i "Name" der ændre, men flere felter i rækken. Hvis nogen kender til gode guides til VBA for en 100% nybegynder, så ville det heller ikke være dårligt, så jeg også forstår, hvordan det hele foregår. På forhånd tak Ole Møller Christensen http://ole.dixib.dk/VBA_test.xls
|
 |
|
|
 |
rassten
Guld bruger
Medlem: 26.Okt.2010
Status: Offline
Point: 694
|
Sendt: 18.Apr.2012 kl. 01:10 |
Hej Er det her noget i den stil den har brug for. uploads/107/color_efter_celle_værdi.xlsSe Sheet2.
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next
lr = Cells(Rows.Count, 3).End(xlUp).Row
For i = 2 To lr If Range("c" & i).Value = "T1" Then Rows(i & ":" & i).EntireRow.Interior.Color = RGB(153, 204, 255) If Range("c" & i).Value = "T2" Then Range("b" & i).Interior.Color = RGB(204, 255, 204) If Range("c" & i).Value = "T3" Then Range("b" & i).Interior.Color = RGB(255, 204, 153) If Range("c" & i).Value = "T4" Then Range("b" & i).Interior.Color = RGB(255, 153, 204) Next End Sub
|
hver gang der sker noget i sheet2, kører makroen.
|
VH rassten
Arbejde excel 2010 Privat excel 2010
|
 |
dixib
Bronze bruger
Medlem: 17.Apr.2012
Land: Danmark
Status: Offline
Point: 26
|
Sendt: 18.Apr.2012 kl. 08:21 |
Hej rassten
Det er er i hvert tilfælde et godt skridt i den rigtige retning! Der er dog to problemer...
Først så bliver hele rækken blå, når der vælges T1, hvor jeg kun ønsker at det er de tre første og femte kolonne (i dette tilfælde). Efter at have valgt T1 for en række og derefter vælger en anden værdi, så forbliver alle de øvrige felter blå, og kun felter i anden kolonne skifter farve. I dette tilfælde skal resten af kolonnerne skifte tilbage til hvid baggrund.
Da du har benyttet det andet worksheet, som jeg benyttede til værdierne i min dropdown, virker denne funktion ikke i din fil, men jeg har kopieret koden over i min egen version og har opdateret den på linket i det første indlæg.
En ekstra feature, som jeg godt kunne ønske mig er at der kommer en tyk border omkring felter, når der vælges T1, som jeg også har opdateret i min fil. Dette skal også forsvinde igen lige som baggrundsfarven i de øvrige kolonner.
Endnu en gang ville det være dejlig, hvis nogen har links til tutorials/guides til disse koder, så jeg bedre forstår, hvad der foregår og evt. selv kan begynde at redigere i dem.
Mange tak for hjælpen indtil nu.
Venlig hilsen Ole Møller Christensen
|
 |
rassten
Guld bruger
Medlem: 26.Okt.2010
Status: Offline
Point: 694
|
Sendt: 18.Apr.2012 kl. 11:07 |
Prøv
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next
lr = Cells(Rows.Count, 3).End(xlUp).Row
Range("a2:c" & lr, "e2:e" & lr).Interior.Color = xlNone Range("a2:c" & lr, "e2:e" & lr).Borders(xlInsideHorizontal).LineStyle = xlNone For i = 2 To lr If Range("c" & i).Value = "T1" Then Range("a" & i & ":" & "c" & i).Interior.Color = RGB(153, 204, 255) If Range("c" & i).Value = "T1" Then With Range("a" & i & ":" & "c" & i).Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlMedium End With With Range("a" & i & ":" & "c" & i).Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium End With End If If Range("c" & i).Value = "T1" Then Range("e" & i).Interior.Color = RGB(153, 204, 255) If Range("c" & i).Value = "T1" Then With Range("e" & i).Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlMedium End With With Range("e" & i).Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium End With End If If Range("c" & i).Value = "T2" Then Range("b" & i).Interior.Color = RGB(204, 255, 204) If Range("c" & i).Value = "T3" Then Range("b" & i).Interior.Color = RGB(255, 204, 153) If Range("c" & i).Value = "T4" Then Range("b" & i).Interior.Color = RGB(255, 153, 204) Next End Sub
|
For dit andet spørgsmål. Prøv at søge i dette Forum, jeg ved at bla. Allan har svaret lignende tidligere.
|
VH rassten
Arbejde excel 2010 Privat excel 2010
|
 |
Kurt Kubik
Sølv bruger
Medlem: 18.Feb.2012
Status: Offline
Point: 209
|
Sendt: 18.Apr.2012 kl. 17:57 |
Linket virker ikke
|
 |
rassten
Guld bruger
Medlem: 26.Okt.2010
Status: Offline
Point: 694
|
Sendt: 18.Apr.2012 kl. 18:03 |
Hvilket link tænker du på? jeg kan godt hente begge eksempel filer, men hvis du har problem skriv, så kan jeg eventuelt sende dem til dig.
|
VH rassten
Arbejde excel 2010 Privat excel 2010
|
 |
Kurt Kubik
Sølv bruger
Medlem: 18.Feb.2012
Status: Offline
Point: 209
|
Sendt: 18.Apr.2012 kl. 19:50 |
rassten skrev:
Hvilket link tænker du på? jeg kan godt hente begge eksempel filer, men hvis du har problem skriv, så kan jeg eventuelt sende dem til dig.
|
Mærkeligt - første link dur slet ikke her!
|
 |
rassten
Guld bruger
Medlem: 26.Okt.2010
Status: Offline
Point: 694
|
Sendt: 18.Apr.2012 kl. 20:15 |
|
VH rassten
Arbejde excel 2010 Privat excel 2010
|
 |
dixib
Bronze bruger
Medlem: 17.Apr.2012
Land: Danmark
Status: Offline
Point: 26
|
Sendt: 19.Apr.2012 kl. 07:57 |
Mit domæne har været nede kortvarigt, da jeg ikke havde fået betalt min regning  Skulle være oppe at køre igen, men dejligt du kunne hjælpe med filer i mellemtiden rassten. Jeg prøver at kigge på din nye kode og kigger lidt videre i forum'et efter andre godter.
|
 |