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
- 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.
podobne do Andrews postu, jest to wersja VBA który formatuje poprawnie i kształt umożliwia także bezpośredni Zaznaczanie komórek.
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.
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
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. –
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 dla ustawienia akcji kliknięcia, aby wybrać komórkę pod spodem. – user2140261
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.
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)";@
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
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. –
Chociaż w praktyce nie jestem pewien, czy istnieje dobry sposób dołączania tekstu z regułą formatowania warunkowego :). –
@BrandonBarney cóż, możesz, określając format liczb .... ;-) –
+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? –
To jest dobre dla obrazów - czy istnieje sposób wprowadzania tekstu jako tła? –