• 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

Status
Niet open voor verdere reacties.

koosvl

Gebruiker
Lid geworden
6 nov 2013
Berichten
13
In excel heb ik in de cellen A1:B3 geplaatst:

4hc 3sc
5r-1 3ac
3kc 4rc

Met behulp van onderstaande macro worden deze omgezet in kaartsymbolen:

Sub (omzetten)
Range("A1:B3").Select
Cells.Replace What:="h", Replacement:=ChrW(&H2665)
Cells.Replace What:="k", Replacement:=ChrW(&H2663)
Cells.Replace What:="r", Replacement:=ChrW(&H2666)
Cells.Replace What:="s", Replacement:=ChrW(&H2660)
Cells.Replace What:="a", Replacement:="SA"
End Sub

Dit werkt prima maar de symbolen voor harten en ruiten wil ik graag in rood hebben.
Hoe kan ik dit met deze macro realiseren?

Mvg koosvl
 
Code:
Sub Omzetten()

    Dim r                     As Range
    Dim i                     As Long

    With Range("A1:B3")

        .Replace What:="h", Replacement:=ChrW(&H2665)
        .Replace What:="k", Replacement:=ChrW(&H2663)
        .Replace What:="r", Replacement:=ChrW(&H2666)
        .Replace What:="s", Replacement:=ChrW(&H2660)
        .Replace What:="a", Replacement:="SA"
        
        For Each r In .Cells
            r.Font.ColorIndex = xlNone
            For i = 1 To Len(r.Text)
                If Mid(r.Text, i, 1) = ChrW(&H2665) Or Mid(r.Text, i, 1) = ChrW(&H2666) Then
                    r.Characters(i, 1).Font.Color = vbRed
                End If
            Next
        Next

    End With

End Sub
 
Laatst bewerkt:
Is dit de bedoeling?
Edit: de code van wigi is beter
 

Bijlagen

  • test kaartkleur.xlsb
    16,5 KB · Weergaven: 48
Laatst bewerkt:
Nog een optie

Code:
Sub VenA()
ar = Array("h", "k", "r", "s", "a", vbRed, vbBlack, vbRed, vbBlack, vbBlack, ChrW(&H2665), ChrW(&H2663), ChrW(&H266[COLOR="#FF0000"]6[/COLOR]), ChrW(&H2660), "SA")
For Each cl In Range("A1:B3")
    With cl.Characters(2, 1)
        .Font.Color = Application.Index(ar, Application.Match(Mid(cl, 2, 1), ar, 0) + 5)
        .Text = Application.Index(ar, Application.Match(Mid(cl, 2, 1), ar, 0) + 10)
    End With
Next cl
End Sub
 
Laatst bewerkt:
Of:
Code:
.Font.Color = ar(Application.Match(Mid(cl, 2, 1), ar, 0) + 4)

en dan moet ar(12) eigenlijk ChrW(&H2666) zijn in de code van @VenA.
 
Laatst bewerkt:
@Hsv,

Over de of moet ik nog eens nadenken (is nog steeds niet mijn ding om efficient(er) gegevens uit een array te halen):d

De terechte opmerking heb ik aangepast in #5
 
@Hsv,

Over de of moet ik nog eens nadenken

Neem er gerust de tijd voor, ik zit je niets op te dringen. :D

Gekheid natuurlijk; ik vind het een mooie oplossing van je.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan