2013-08-12 14 views
7

Szukam sposobu wstawiania tekstu na tło komórki, aby nadal móc wprowadzać liczby na górze tego tekstu - podobnie jak znak wodny z wyjątkiem pojedynczej komórki. Jakiekolwiek sposoby, aby to zrobić, najlepiej bez użycia makra (ale także otwartego na te rozwiązania)?Wstawianie tekstu w tle komórki

Odpowiedz

7
  • Wybierz komórkę, w której chcesz utworzyć tło.
  • Kliknij "Wstaw" i wstaw prostokątny kształt w tym miejscu.
  • prawym przyciskiem myszy na kształt - wybierz "Format Shape"
  • Goto "Fill" i wybierz "Picture lub tekstury syta"
  • Goto „Wstaw z pliku” opcji
  • Wybierz zdjęcie, które chcesz zrobić wodę -MARK
  • obraz pojawi się w miejscu kształcie prostokąta
  • teraz kliknij na obrazek „kliknąć prawym przyciskiem” i wybrać format obrazu
  • Goto „Fill” i zwiększenia przejrzystości wymagane wyglądać to jak „Woda Mark "lub światło beckgro und
  • To również zostanie wydrukowane.

taken from here

+0

+1 Zawsze zastanawiałem się, dlaczego ktoś chciałby umieścić zdjęcie w tle komórki. Sprytny. ... właściwie jest to po prostu nieco przezroczysty kształt na górze komórki? Czy to jednak nie sprawia, że ​​wybieranie komórki jest trochę uciążliwe? –

+0

To jest dobre dla obrazów - czy istnieje sposób wprowadzania tekstu jako tła? –

7

podobne do Andrews postu, jest to wersja VBA który formatuje poprawnie i kształt umożliwia także bezpośredni Zaznaczanie komórek.

enter image description here

kod modułu:

Sub watermarkShape() 
Const watermark As String = "watermark" 
Dim cll As Range 
Dim rng As Range 
Dim ws As Worksheet 
Dim shp As Shape 

    Set ws = Sheet1 
    Set rng = ws.Range("A1:F10") 'Set range to fill with watermark 

    Application.ScreenUpdating = False 

    For Each shp In ws.Shapes 
     shp.Delete 
    Next shp 

    For Each cll In rng 

     Set shp = ws.Shapes.AddShape(msoShapeRectangle, 5, 5, 5, 5) 

     With shp 
      .Left = cll.Left 
      .Top = cll.Top 
      .Height = cll.Height 
      .Width = cll.Width 

      .Name = cll.address 
      .TextFrame2.TextRange.Characters.Text = watermark 
      .TextFrame2.TextRange.Font.Name = "Tahoma" 
      .TextFrame2.TextRange.Font.Size = 8 
      .TextFrame2.VerticalAnchor = msoAnchorMiddle 
      .TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenter 
      .TextFrame2.WordWrap = msoFalse 
      .TextFrame.Characters.Font.ColorIndex = 15 
      .TextFrame2.TextRange.Font.Fill.Transparency = 0.35 

      .Line.Visible = msoFalse 
'   Debug.Print "'SelectCell (""" & ws.Name & """,""" & cll.address & """)'" 
      .OnAction = "'SelectCell """ & ws.Name & """,""" & cll.address & """'" 

      With .Fill 
       .Visible = msoTrue 
       .ForeColor.ObjectThemeColor = msoThemeColorBackground1 
       .Transparency = 1 
       .Solid 
      End With 

     End With 


    Next cll 

    Application.ScreenUpdating = True 
End Sub 

Sub SelectCell(ws, address) 
    Worksheets(ws).Range(address).Select 
End Sub 

UPDATE:

Poniższy przykład przypisuje znak wodny adresu komórki do nieparzystych wierszy i pozostawia nawet wiersze jak stałym watermark. Jest to przykład oparty na moim komentarzu, że każdej komórce można przypisać dowolny tekst znaku wodnego na podstawie dowolnych warunków.

enter image description here

Option Explicit 

Sub watermarkShape() 
Const watermark As String = "watermark" 
Dim cll As Range 
Dim rng As Range 
Dim ws As Worksheet 
Dim shp As Shape 

    Set ws = Sheet1 
    Set rng = ws.Range("A1:F10") 'Set range to fill with watermark 

    Application.ScreenUpdating = False 

    For Each shp In ws.Shapes 
     shp.Delete 
    Next shp 

    For Each cll In rng 

     Set shp = ws.Shapes.AddShape(msoShapeRectangle, 5, 5, 5, 5) 

     With shp 
      .Left = cll.Left 
      .Top = cll.Top 
      .Height = cll.Height 
      .Width = cll.Width 

      .Name = cll.address 
      If cll.Row Mod 2 = 1 Then 
       .TextFrame2.TextRange.Characters.Text = cll.address 
      Else 
       .TextFrame2.TextRange.Characters.Text = watermark 
      End If 
      .TextFrame2.TextRange.Font.Name = "Tahoma" 
      .TextFrame2.TextRange.Font.Size = 8 
      .TextFrame2.VerticalAnchor = msoAnchorMiddle 
      .TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenter 
      .TextFrame2.WordWrap = msoFalse 
      .TextFrame.Characters.Font.ColorIndex = 15 
      .TextFrame2.TextRange.Font.Fill.Transparency = 0.35 

      .Line.Visible = msoFalse 
'   Debug.Print "'SelectCell (""" & ws.Name & """,""" & cll.address & """)'" 
      .OnAction = "'SelectCell """ & ws.Name & """,""" & cll.address & """'" 

      With .Fill 
       .Visible = msoTrue 
       .ForeColor.ObjectThemeColor = msoThemeColorBackground1 
       .Transparency = 1 
       .Solid 
      End With 

     End With 


    Next cll 

    Application.ScreenUpdating = True 
End Sub 

Sub SelectCell(ws, address) 
    Worksheets(ws).Range(address).Select 
End Sub 
+0

Czy istnieje VBA do dostosowywania tekstu wprowadzanego do tła każdej komórki? Ostateczny produkt tego wygląda świetnie, po prostu chciałbym mieć możliwość dostosowania tego, co mówi tekst dla każdej komórki. –

+0

Linia '.TextFrame2.TextRange.Characters.Text = watermark' przypisuje stały' znak wodny' do wszystkich komórek. Po prostu zmień linię '.TextFrame2.TextRange.Characters.Text =" Some Text "' na dowolny tekst w oparciu o zakres komórek/adres – user3357963

+1

+1 dla ustawienia akcji kliknięcia, aby wybrać komórkę pod spodem. – user2140261

-1

Wpisz tekst w komórce wszędzie. Skopiuj go, a zostanie zapisany w schowku. Wstaw prostokątny kształt w dowolnym miejscu. Kliknij prawym przyciskiem myszy i wybierz "Wyślij do tyłu". Zapewni to, że będzie w tle. Kliknij prawym przyciskiem myszy i "Formatuj kształt". Zrób zakładkę "Wypełnij" i kliknij "Wypełnienie obrazu lub tekstury". Przy "wstaw z" wybierz "schowek". Teraz tekst skopiowany do schowka będzie miał kształt prostokąta. Zmień rozmiar kształtu, aby pasował do pożądanych komórek. Dopasuj, ale lubisz, na przykład: usuń prostokątne linie, dodaj cień, zmień czcionkę, usuń tło itp.

5

Można użyć formatu liczbowego, aby określić tekst światło szary wyświetlać, gdy wartość komórki jest 0 - Color15 sprawia piękny kolor Znak wodny:

[Black]000000;;[Color15]"(order number)";@ 

watermarked cells

Bez brudnych kształtów, brak VBA, a znak wodny znika, gdy wartość jest faktycznie wypełniona.

A jeśli koniecznie musisz to zrobić w VBA, można łatwo napisać funkcję, która buduje ciąg formatu na podstawie kilku parametrów:

Public Function BuildWatermarkFormat(ByVal watermarkText As String, Optional ByVal positiveFormat As String = "General", Optional ByVal negativeFormat As String = "General", Optional ByVal textFormat As String = "General") As String 
    BuildWatermarkFormat = positiveFormat & ";" & negativeFormat & ";[Color15]" & Chr(34) & watermarkText & Chr(34) & ";" & textFormat 
End Function 

A potem można zrobić:

myCell.NumberFormat = BuildWatermarkFormat("Please enter a value") 
myCell.Value = 0 

Nadal możesz dostarczać niestandardowe formaty wartości pozytywnych/negatywnych zgodnie ze swoimi potrzebami; jedyną rzeczą jest, że 0 jest zarezerwowany dla "brak wartości" i uruchamia znak wodny.

myCell.NumberFormat = BuildWatermarkFormat("Please enter a value", "[Blue]#,##0.00_)", "[Red](#,##0.00)") 
myCell.Value = -25 
+0

Nie można tego samego osiągnąć za pomocą warunkowej reguły formatowania? Możesz nadal używać niestandardowych formatów liczbowych, osiągnąć te same efekty i stosować regułę, która wyszukuje puste komórki w porównaniu do komórek o wartości 0. –

+1

Chociaż w praktyce nie jestem pewien, czy istnieje dobry sposób dołączania tekstu z regułą formatowania warunkowego :). –

+0

@BrandonBarney cóż, możesz, określając format liczb .... ;-) –

Powiązane problemy