2013-08-12 11 views
7

Sto cercando un modo per inserire testo sullo sfondo di una cella, in modo che possa ancora inserire i numeri sopra quel testo - simile a una filigrana ad eccezione di una singola cella. Qualche modo per farlo, preferibilmente senza usare una macro (ma aperta anche a queste soluzioni)?Inserimento di testo sullo sfondo di una cella

risposta

7
  • Selezionare la cella in cui si desidera rendere lo sfondo.
  • Fare clic su "Inserisci" e inserire una forma rettangolare in quella posizione.
  • Fare clic destro sulla forma - selezionare "Formato forma"
  • Goto "Fill" e selezionare "Immagine o un riempimento texture"
  • Goto “Inserisci file da” opzione
  • selezionare l'immagine che si desidera rendere l'acqua -Mark
  • immagine apparirà nel luogo di forma rettangolare
  • Ora cliccate sulla immagine “click destro” e selezionare Formato immagine
  • Goto “Fill” e aumentare la trasparenza come richiesto a guardare come un “Water Mark "o luce beckgro und
  • Anche questo verrà stampato.

taken from here

+0

+1 Mi sono sempre chiesto perché qualcuno vorrebbe mettere una foto sullo sfondo di una cella. Intelligente. ... in realtà è solo una forma un po 'trasparente sulla parte superiore della cella, giusto? Ciò non rende la selezione della cella un po 'di dolore? –

+0

Questo è ottimo per le immagini - c'è un modo per inserire il testo come sfondo? –

7

simili Andrews postale, questa è la versione VBA che formatta correttamente la forma e permette anche la selezione diretta di cellule.

enter image description here

codice del modulo:

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:

l'esempio seguente assegna una filigrana l'indirizzo di cella a righe dispari e lascia i filari come la costante watermark. Questo è un esempio basato sul mio commento secondo il quale ogni cella può essere assegnata a qualsiasi filigrana basata su qualsiasi conditione tu voglia.

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

Esiste un VBA per personalizzare il testo inserito nello sfondo di ogni cella? Il prodotto finale di questo è fantastico, vorrei solo la possibilità di personalizzare ciò che il testo dice per ogni cella. –

+0

La riga '.TextFrame2.TextRange.Characters.Text = watermark' assegna costante' watermark' a tutte le celle. Basta cambiare la riga '.TextFrame2.TextRange.Characters.Text =" Some Text "' a qualunque testo tu voglia basato sull'intervallo di celle/indirizzo – user3357963

+1

+1 per l'impostazione dell'azione click per selezionare la cella sottostante. – user2140261

-1

digitare il testo in una cella da nessuna parte. Copia e verrà salvato negli appunti. Inserisci una forma rettangolare ovunque. Fare clic con il tasto destro e selezionare "Invia a back". Questo assicurerà che sarà in background. Fare clic con il tasto destro e "Formatta forma". Fare clic sulla scheda "Riempi" e fare clic su "immagine o riempimento trama". Al "Inserisci da" scegli "appunti". Ora qualsiasi testo copiato negli appunti sarà nella forma rettangolare. Ridimensiona la forma per adattarla alle celle che desideri. Regola comunque come ad esempio rimuovi le linee rettangolari, aggiungi ombre, cambia font, rimuovi sfondo ecc.

5

È possibile utilizzare un formato numerico personalizzato per specificare un testo grigio chiaro da visualizzare quando il valore della cella è 0-Color15 fa un bel colore filigrana:

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

watermarked cells

Nessun forme disordinato, nessun VBA e la filigrana scompare quando il valore è effettivamente riempito.

E se è assolutamente necessario farlo in VBA, allora si può facilmente scrivere una funzione che costruisce la stringa di formato sulla base di alcuni parametri:

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 

E allora si può fare:

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

E puoi ancora fornire formati personalizzati per i valori positivi/negativi secondo le tue esigenze; l'unica cosa è che 0 è riservato per "nessun valore" e attiva la filigrana.

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

Non è possibile ottenere lo stesso risultato con una regola di formattazione condizionale? Potresti quindi essere ancora in grado di utilizzare formati numerici personalizzati, ottenere gli stessi effetti e utilizzare una regola che cerchi celle vuote rispetto a celle con un valore pari a 0. –

+1

Anche se, in pratica, non sono sicuro che ci sia un buono modo di includere il testo con una regola di formattazione condizionale :). –

+0

@BrandonBarney bene si potrebbe, specificando un .... numero formato ;-) –

Problemi correlati