2013-08-12 64 views
7

Tôi đang tìm cách chèn văn bản vào nền của ô, để tôi vẫn có thể nhập số trên đầu văn bản đó - tương tự như hình mờ trừ một ô riêng lẻ. Bất kỳ cách nào để làm điều này, tốt nhất là không sử dụng một macro (nhưng cũng mở cho các giải pháp này)?Chèn văn bản vào nền của ô

Trả lời

7
  • Chọn Ô nơi bạn muốn tạo Nền.
  • Nhấp vào "Chèn" và chèn Hình dạng hình chữ nhật vào vị trí đó.
  • Nhấp chuột phải vào hình dạng - chọn "Format Shape"
  • Goto "Điền" và chọn "Picture hoặc texture fill"
  • Goto “Insert từ File” tùy chọn
  • Chọn hình ảnh bạn muốn chắc nước -mark
  • ảnh sẽ xuất hiện ở vị trí của hình chữ nhật
  • Bây giờ bấm vào hình ảnh “click chuột phải” và chọn Format picture
  • Goto “Điền” và tăng tính minh bạch theo yêu cầu để trông nó giống như một “nước Đánh dấu ”hoặc beckgro ánh sáng und
  • Điều này cũng sẽ được in.

taken from here

+0

+1 Tôi luôn tự hỏi tại sao một người nào đó muốn đặt ảnh trong nền của ô. Tài giỏi. ... thực sự nó chỉ là một hình dạng hơi trong suốt trên đỉnh của tế bào phải không? Điều đó không làm cho việc lựa chọn các tế bào phần nào của một cơn đau mặc dù? –

+0

Điều này thật tuyệt vời cho hình ảnh - có cách nào để nhập văn bản làm nền không? –

7

Tương tự như Andrews bài, đây là phiên bản VBA mà định dạng hình dạng một cách chính xác và cũng cho phép lựa chọn trực tiếp của các tế bào.

enter image description here

Mã MODULE:

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:

ví dụ dưới đây gán một watermark của địa chỉ ô để hàng lẻ và rời khỏi hàng ngay cả khi liên tục watermark. Đây là một exaple dựa trên nhận xét của tôi rằng bất kỳ tế bào có thể được chỉ định bất kỳ văn bản watermark dựa trên bất cứ điều gì conditons bạn muốn.

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

Có VBA để tùy chỉnh văn bản được nhập vào nền của mỗi ô không? Sản phẩm cuối cùng của điều này có vẻ tuyệt vời, tôi chỉ muốn có khả năng tùy chỉnh nội dung văn bản cho từng ô. –

+0

Dòng '.TextFrame2.TextRange.Characters.Text = watermark' gán hằng số' watermark' cho tất cả các ô. Chỉ cần thay đổi dòng '.TextFrame2.TextRange.Characters.Text =" Một số văn bản "thành bất kỳ văn bản nào bạn muốn dựa trên dải ô/địa chỉ – user3357963

+1

+1 để đặt hành động nhấp để chọn ô bên dưới. – user2140261

-1

Gõ văn bản của bạn trong một tế bào bất cứ nơi nào. Sao chép và nó sẽ được lưu vào clipboard. Chèn hình chữ nhật vào bất kỳ đâu. Nhấp chuột phải và chọn "Gửi lại". Điều này sẽ đảm bảo nó sẽ ở chế độ nền. Nhấp chuột phải và "Định dạng hình dạng". Làm cho tab "Điền" và nhấp vào "hình ảnh hoặc kết cấu điền". Tại "chèn từ", chọn "clipboard". Bây giờ bất kỳ văn bản nào bạn đã sao chép vào khay nhớ tạm sẽ ở dạng hình chữ nhật. Thay đổi kích thước hình dạng để phù hợp với (các) ô bạn muốn. Điều chỉnh tuy nhiên bạn thích ví dụ như xóa các đường hình chữ nhật, thêm bóng, thay đổi phông chữ, xóa nền, v.v.

5

Bạn có thể sử dụng một định dạng số tùy chỉnh để chỉ định một văn bản màu xám nhạt để hiển thị khi giá trị tế bào là 0-Color15 tạo ra một màu mờ đẹp:

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

watermarked cells

Không hình lộn xộn, không có VBA và hình mờ biến mất khi giá trị thực sự được lấp đầy.

Và nếu bạn hoàn toàn cần phải làm điều đó trong VBA, sau đó bạn có thể dễ dàng viết một hàm xây dựng chuỗi định dạng dựa trên một số thông số:

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 

Và sau đó bạn có thể làm:

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

Và bạn vẫn có thể cung cấp các định dạng tùy chỉnh cho các giá trị dương/âm theo nhu cầu của bạn; điều duy nhất là 0 được dành riêng cho "không có giá trị" và kích hoạt hình mờ.

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

Không thể đạt được cùng một quy tắc định dạng có điều kiện? Sau đó, bạn vẫn có thể sử dụng định dạng số tùy chỉnh, đạt được hiệu ứng tương tự và sử dụng quy tắc tìm kiếm ô trống so với ô chỉ có giá trị là 0, –

+1

Mặc dù, trên thực tế, tôi không chắc liệu có tốt hay không cách bao gồm văn bản với quy tắc Định dạng có điều kiện :). –

+0

@BrandonBarney tốt bạn có thể, bằng cách xác định một .... định dạng số ;-) –

Các vấn đề liên quan