Voorwaardelijke opmaak knopje tabblad excel

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
Mijn vraag
...hallo allen,

Ik ben voor mijn werk een excel bestand aan het maken en loop tegen het volgende.

De knopjes waarmee je een tabblad selecteerd wil ik aan de hand van een waarde in een cel laten verkleuren.
Dmv een macro is dit op zich al gedeeltelijk gelukt echter alleen als ik handmatig een getal invoer maar als die cel de uitkomst van een formule is werkt het plots niet meer.

Doe ik iets fout of is dit überhaupt niet mogelijk.

Alvast hartelijk dank .

Gr Corne

Relevante software en hardware die ik gebruik
...excel 365

Wat ik al gevonden of geprobeerd heb
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$G$59" Then
If Target < 0 Then
ActiveSheet.Tab.Color = vbRed
Else
ActiveSheet.Tab.Color = vbGreen
End If
End If
End Sub
...

Beste antwoord (via Nilles111 op 26-10-2022 20:06)


  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Je kunt ook onderstaande code plaatsen in het vba-blad behorend bij ThisWorkbook, als je de code voor alle bladen wil laten gelden. Dan moet je in de afzonderlijke bladen voor de vw. opmaak geen code meer opnemen.
Je kunt de code uiteraard ook voor bepaalde bladen laten gelden, maar dan moet je de macro iets aanpassen. Let wel: de code geldt alleen voor het geval er in G59 een formule staat, niet als er geen formule in staat!

code:
1
2
3
4
5
6
7
8
9
10
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
If ws.Range("G59").Value < 0 Then
ws.Tab.Color = vbRed
Else
ws.Tab.Color = vbGreen
End If
Next ws
End Sub

[ Voor 27% gewijzigd door dix-neuf op 25-10-2022 15:22 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Het 'change-event' werkt niet als gevolg van de wijziging van een celwaarde door een formule. Wil je toch dat de tabkleur dan wijzigt, dan moet je het 'Calculate-event' gebruiken. En dan niet op basis van het selecteren van G59, maar op basis van de waarde ervan.

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Én Nilles111, is het gelukt?

Acties:
  • 0 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
Dank voor uw bericht, moet ik nog proberen.
Moet ik dan gewoon in de code change vervangen door calculatie?

Acties:
  • +2 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Als in G59 een formule staat, kun je dit gebruiken voor het betreffende werkblad:
code:
1
2
3
4
5
6
7
Private Sub Worksheet_Calculate()
If Range("G59").Value < 0 Then
ActiveSheet.Tab.Color = vbRed
Else
ActiveSheet.Tab.Color = vbGreen
End If
End Sub

Acties:
  • 0 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
Dank u , ik ga vanavond even proberen.

Acties:
  • 0 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
Het werkt nu helemaal naar behoren.
Hartelijk dank voor uw hulp.

Acties:
  • 0 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
Goede middag,

Tot op heden werkte het prima, echter wilde ik een nieuw tabblad openen met diezelfde functie, maar op dat nieiwe tabblad wertk het niet meer. Heb ook de code weer opnieiw ingevoerd etc. Maar zonder resultaat. Moet ik het dan op een bepaalde manier kopieren oid?

Gr corne

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Je moet de code plaatsen in het vba-blad, behorend bij het gekopieerde blad.
De code gaat niet automatisch mee naar dat blad.

Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Je kunt ook onderstaande code plaatsen in het vba-blad behorend bij ThisWorkbook, als je de code voor alle bladen wil laten gelden. Dan moet je in de afzonderlijke bladen voor de vw. opmaak geen code meer opnemen.
Je kunt de code uiteraard ook voor bepaalde bladen laten gelden, maar dan moet je de macro iets aanpassen. Let wel: de code geldt alleen voor het geval er in G59 een formule staat, niet als er geen formule in staat!

code:
1
2
3
4
5
6
7
8
9
10
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
If ws.Range("G59").Value < 0 Then
ws.Tab.Color = vbRed
Else
ws.Tab.Color = vbGreen
End If
Next ws
End Sub

[ Voor 27% gewijzigd door dix-neuf op 25-10-2022 15:22 ]


Acties:
  • 0 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
Hallo, ik had het de code in het nieuwe blad ingevoerd, helaas werkt dit niet.
Ik ga dadelijk even de andere optie proberen.
Ik hou u op de hoogte .

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Mijn bericht van 14.52 uur was niet juist.
Als je een werkblad kopieert, dan wordt ook de code van 'Private Sub...' mee gekopieerd en die werkt ook automatisch meteen in het gekopieerde blad (zojuist gecontroleerd). Maar nogmaals: de code geldt alleen voor het geval er in G59 een formule staat, niet als er geen formule in staat!

Acties:
  • 0 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
De laatste optie krijg ik ook niet werkend.

Wel lukt het als ik van het vorige tabblad en code verwijder en in het nieuwe plak. Mocht er een andere optie zijn zou dat fijn zijn, anders is het voor zover ook prima.

Dank u wel

Acties:
  • 0 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
Ik had overigens uw laatste code ingevoerd op de volgende manier :
Beeld,
Macro,
Macronaam ingevoerd,
Maken, en daar de code ingevoerd.

Mischien dat ik daar iets verkeerd heb gedaan?

Acties:
  • 0 Henk 'm!

  • dix-neuf
  • Registratie: Juli 2018
  • Niet online
Nilles111 schreef op dinsdag 25 oktober 2022 @ 15:40:
Ik had overigens uw laatste code ingevoerd op de volgende manier :
Beeld,
Macro,
Macronaam ingevoerd,
Maken, en daar de code ingevoerd.
Mischien dat ik daar iets verkeerd heb gedaan?
Dat is inderdaad niet goed, dan plaats je de code in een module wat niet de bedoeling is.
Toets ALT-F11, dubbelklik aan de linkerkant op de naam van het blad waarin de code moet werken, en plaats aan de rechterkant de code. Klik dan op het kruisje rechtsboven om terug naar een werkblad te gaan.

Acties:
  • 0 Henk 'm!

  • Nilles111
  • Registratie: Oktober 2022
  • Laatst online: 04-06 15:17
Zo te zien werkt het nu wel inderdaad.
Hartelijk dank
Pagina: 1