将文本插入到单元格的背景中

我正在寻找一种将文本插入到单元格的背景中的方法,这样我仍然可以在该文本的顶部input数字 – 类似于除单个单元格之外的水印。 任何方式来做到这一点,最好不使用macros(但也打开这些解决scheme)?

  • select您想要制作背景的单元格。
  • 点击“插入”并在该位置插入一个矩形的形状。
  • 右键单击形状 – select“格式形状”
  • 转到“填充”并select“图片或纹理填充”
  • 转到“从文件插入”选项
  • select你想要做水印的图片
  • 图片将出现在矩形形状的地方
  • 现在点击图片“右键点击”并select格式化图片
  • 转到“填充”,并根据需要增加透明度,使其看起来像“水印”或浅色背景
  • 这也将被打印。

从这里采取

类似于安德鲁斯后,这是VBA版本正确格式化形状,也允许直接select单元格。

在这里输入图像描述

代码模块:

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 

更新:

下面的例子将单元地址的水印分配给奇数行,并将偶数行保留为恒定watermark 。 这是一个基于我的意见的例子,任何单元格都可以根据您想要的任何条件分配任何水印文本。

在这里输入图像描述

 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时,可以使用自定义数字格式指定要显示的浅灰色文本 – Color15制作漂亮的水印颜色:

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

加水印的单元格

没有杂乱的形状,没有VBA,并且水印在实际填满时消失。

如果你确实需要在VBA中做,那么你可以很容易地编写一个函数来构build基于一些参数的格式化string:

 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 

然后你可以这样做:

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

而且您仍然可以根据您的需要提供正面/负面的定制格式; 唯一的是0被保留为“无值”并触发水印。

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

在任何地方在单元格中input文字。 复制它,它将被保存在剪贴板上。 在任何地方插入矩形形状。 右键点击并select“发回”。 这将确保它将在后台。 右键点击“格式化”。 做标签“填充”,然后点击“图片或纹理填充”。 在“插入”select“剪贴板”。 现在,无论您复制到剪贴板上的文字都将呈矩形。 调整形状以适应您所需的单元格。 调整,但你喜欢例如删除矩形线,添加阴影,更改字体,删除背景等。