Jak ustawić przezroczystość czcionki komórki?

18

Tworzę mapę termiczną przy użyciu formatowania warunkowego programu Excel. Nie chcę, aby wartości komórki były wyświetlane na kolorowym tle. Czy istnieje sposób, aby formatowanie czcionki było przezroczyste, podobnie jak w przypadku formatowania wypełnienia komórki?

Ponieważ jest to mapa termiczna, nie mogę użyć jednego koloru (np. Białego) i wolałbym nie formatować osobno właściwości czcionki każdej komórki na odpowiedni kolor.

EDYCJA: Aby pomóc wyjaśnić, mapa ciepła jest pokolorowana za pomocą Formowania warunkowego> Skala kolorów> Czerwono-biało-niebieska (gdzie biel została zmodyfikowana na jasnoszary), więc wartość wypełnienia komórki nie jest ustawiana bezpośrednio, a raczej jest wartością obliczoną na gradiencie kolorów.

Mapa ciepła

dav
źródło

Odpowiedzi:

29

Znalazłem obejście, które nie zmienia koloru czcionki, ale skutecznie usuwa tekst z komórek. Ustaw format liczby komórek na Niestandardowy, używając wartości ;;;.

dav
źródło
Świetnie, działa jak wszystko
Dev_Man
3

Chociaż nie znam żadnej funkcji arkusza roboczego, która pozwalałaby dopasować kolor czcionki komórki do koloru wypełnienia (innego niż ręcznie), bardzo łatwo jest zrobić z makrem. Pierwsze makro poniżej zmienia kolory czcionek w komórkach wybranego zakresu, aby dopasować ich kolory wypełnienia. Drugi przywraca kolory czcionek do domyślnej czerni.

Sub HideFont()
    Dim cell As Variant
    For Each cell In Selection
        cell.Font.Color = cell.Interior.Color
    Next cell
End Sub

Sub UnhideFont()
    Dim cell As Variant
    For Each cell In Selection
        cell.Font.Color = 0
    Next cell
End Sub

Aby zainstalować makra, wybierz Developer/ Visual Basicz głównej wstążki, a następnie wybierz Insert/ Modulez menu. Wklej kod do panelu edycji, który się otworzy. Makra pojawią się na liście makr dostępnej poprzez wybranie Developer/ Macrosz głównej wstążki. Po prostu wybierz za pomocą myszy zakres, który chcesz zmodyfikować, i wybierz makro, które chcesz uruchomić.

chuff
źródło
Bardzo ciekawe podejście. Próbowałem i działa w nieformalnie sformatowanej wypełnionej komórce (tzn. Tam, gdzie format komórki jest wybierany bezpośrednio). Niestety nie działa, gdy kolor komórki jest formatem warunkowym na gradiencie - wtedy zmienia się tylko w biały. jakieś pomysły?
dav
Szkoda Odpowiedzi w tym poście StackOverflow sugerują podejście. Sprawdzę później dzisiaj.
chuff
Dzięki, na razie używam mojego kodu liczbowego, ale zamierzam rozwinąć VBA, o którym mowa w twoim linku, aby uzyskać lepsze długoterminowe rozwiązanie.
dav
Przepraszam za zmianę zaakceptowanej odpowiedzi, ale przy różnicy głosów wydawało się to właściwe. Ponadto pasuje do metody, której regularnie używam.
dav
1

Okej, więc po raz pierwszy przesłałem kod, więc proszę bardzo. Myślałem, że droga makro będzie dobrym rozwiązaniem, ale ponieważ nie można ustawić czcionki tak, aby była taka sama jak kolor komórki przy użyciu formatowania warunkowego, jedyną inną metodą byłaby zmiana obu za pomocą makra, które działa podobnie do efekt formatu warunkowego, patrz poniżej:

Sub change()

    Dim Rstart, Rmid, Rend, Gstart, Gmid, Gend, Bstart, Bmid, Bend, Rsd, Rdd,_
    Gsd, Gdd, Bsd, Bdd, Rcell, Gcell, Bcell As Integer
    Dim maxsel, minsel, halfsel, halfval, v As Double



    Rstart = 0
    Rmid = 230
    Rend = 255
    Gstart = 0 
    Gmid = 230
    Gend = 0
    Bstart = 255
    Bmid = 230
    Bend = 0

    Rsd = Rmid - Rstart
    Rdd = Rend - Rmid

    Gsd = Gmid - Gstart
    Gdd = Gend - Gmid

    Bsd = Bmid - Bstart
    Bdd = Bend - Bmid

    maxsel = Application.WorksheetFunction.Max(Selection)
    minsel = Application.WorksheetFunction.Min(Selection)
    halfsel = (maxsel - minsel) / 2
    halfval = minsel + halfsel
    If halfval = 0 Then Exit Sub

    Dim cell As Variant
    For Each cell In Selection
        v = cell.Value
        If v >= minsel And v < halfsel Then
            Rcell = Round((Rstart + ((halfval - v) / halfsel) * Rsd), 0)
            Gcell = Round((Gstart + ((halfval - v) / halfsel) * Gsd), 0)
            Bcell = Round((Bstart + ((halfval - v) / halfsel) * Bsd), 0)
        Else
            Rcell = Round((Rmid + ((v - halfval) / halfsel) * Rdd), 0)
            Gcell = Round((Gmid + ((v - halfval) / halfsel) * Gdd), 0)
            Bcell = Round((Bmid + ((v - halfval) / halfsel) * Bdd), 0)
        End If

    cell.Font.Color = RGB(Rcell, Gcell, Bcell)
    cell.Interior.Color = RGB(Rcell, Gcell, Bcell)

    Next cell

    End Sub

Mam nadzieję, że to komuś pomoże, nawet jeśli jest o trzy lata za późno na pierwotne pytanie.

timbosides
źródło
1

Tak to robię.

.Cells (RowTo, ColHcpDiP) .ont.Color = .Cells (RowTo, ColHcpDiP) .Interior.Color 'Ustaw kolor niewidoczny

użytkownik685761
źródło