• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Kleur van tekst bepalen (uitlezen)

Status
Niet open voor verdere reacties.

Pieter671

Gebruiker
Lid geworden
26 jun 2015
Berichten
105
Beste lezer,

Als in een cel een gedeelte van de tekst in de kleur ROOD staat, dan wil ik graag dat het blok (cel) ernaast op rood komt te staand. Is de gehele tekst in zwart, dan is het de bedoeling dat het blok ernaast in het GROEN komt te staan. Welke oplossing is hier mogelijk in EXCEL 2010. Bij voorkeur zonder VBA.

Zie bijgevoegd voorbeeld.

Heeft iemand een idee hoe dit handen en voeten te geen?

Groeten,
Pieter
 

Bijlagen

Er zijn mij geen functies buiten VBA bekend die je kunnen vertellen welke kleur een deel van de tekst in een cel heeft. Ook met VBA zal een en ander niet gemakkelijk zijn (ik weet ook niet echt of het wel mogelijk is).
 
Beste Pieter,

Wat je vraagt is volgens mijn kennis niet op te doen, helemaal niet zonder VBA.
Wellicht kan je de oplossing wel anders bereiken.

Wanneer je in een cel met tekst een gedeelte van de tekst rood hebt, zal je dit moeten kleuren in de cel zelfs. Waarschijnlijk doe je dit zelf en zit hier een bepaalde voorwaarde aan vast die je zelf hebt gesteld.
Waarom zou je wanneer je het stuk tekst rood maakt niet automatisch de cel ernaast ook rood maken.

Je zou anders kunnen uitleggen waar je document voor dient, dan kan er naar een andere oplossing worden gekeken.
 
Zonder VBA zie ik dit ook niet zitten, zie bijlage voor een poging op basis van een User Defined Function
 

Bijlagen

Bedankt voor jullie snelle reacties,

Dat de oplossing niet zonder VBA kan is wat mij betreft prima.

@WHER, dit komt inderdaad in de buurt van mijn beoogd eindresultaat. Ziet er mooi uit.

Als ik de kleuren van de tekst bijvoorbeeld weer terugzet naar zwart, dan moet ik dit tweemaal doen. Op één of andere manier blijft iets hangen. Misschien komt dit om dat de oplossing als function is opgenomen.

In het uiteindelijke spreadsheet zijn dit zo'n 140 blokken met tekst. Per blok (indien een gedeelte rood) moet het signaleringblok op rood gezet worden.

Is deze oplossing ook te maken in een macro die, wanneer gestart, vervolgens in een loop alle blokken langs loopt?
 
Dat kan ook als macro, hopelijk zijn de "blokken tekst" en het "signaleringsblok" waarover je het hebt, geen samengevoegde cellen zoals in het voorbeeld?
 

Bijlagen

Laatst bewerkt:
of met:

Code:
Sub M_snb()
    For Each cl In Columns(2).SpecialCells(2, 2)
      cl.Offset(, 1).Resize(4, 10).Interior.ColorIndex = 4

      For j = 1 To Len(cl)
         If cl.Characters(j, 1).Font.ColorIndex = 3 Then
            cl.Offset(, 1).Resize(4, 10).Interior.ColorIndex = 3
            Exit For
         End If
      Next

    Next
End Sub
 
Waarom zo eenvoudig als het ingewikkeld ook kan ......:o
 
Sorry, ik kon zo snel niets complexers bedenken... :D

Je zette me wel weer aan het denken:

Code:
Sub M_snb()
    For Each cl In Columns(2).SpecialCells(2, 2)
      For j = 1 To Len(cl)
         If cl.Characters(j, 1).Font.ColorIndex = 3 Then Exit For
      Next

      cl.Offset(, 1).Resize(4, 10).Interior.ColorIndex = 4 + (j < Len(cl)+1)
    Next
End Sub
 
Laatst bewerkt:
Oplossing

@snb, bedankt voor de opzet van de syntax. Als ik je laatste opzet volg, dan krijg ik een geheel groen vlak.
Zie spreadsheet.

Ik heb het sub-je een beetje omgebouwd. Qua opzet kan het misschien nog wel strakker.
Voor mij werkt dit goed.

Thanx.

Bekijk bijlage Oplossing.xlsm
 
Als je de opzet van je bestand verandert moet de code natuurlijk dienovereenkomstig aangepast worden.
Probeer dus altijd eerst de code helemaal te doorgronden. (bijv. wat doet resize ? gewoon opzoeken in de hulpbestanden van de VBEditor).

Code:
Sub M_snb()
    For Each cl In Columns(2).SpecialCells(2, 2)
      For j = 1 To Len(cl)
         If cl.Characters(j, 1).Font.ColorIndex = 3 Then Exit For
      Next

      cl.Offset(, 1).Interior.ColorIndex = 4 + (j < Len(cl)+1)
    Next
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan