如何使用VBA宏从Excel隐藏彩色文本

时间:2019-02-06 16:45:18

标签: excel vba

如何使用vba宏从excel隐藏文本?

1 个答案:

答案 0 :(得分:2)

隐藏完整的行或列

您可以隐藏完整的行或列e。 G。通过这个:

Worksheet(...).Range(...).EntireRow.Hidden = True
Worksheet(...).Range(...).EntireColumn.Hidden = True

您还可以将行或列分组并设置大纲级别以将其隐藏:

Worksheet(...).Range(...).EntireRow.Group
Worksheet(...).Outline.ShowLevels RowLevels:=1

不能隐藏单个单元格(只能将其删除,但这会将其他单元格移动到其下方)。

隐藏单元格的部分

不幸的是,Font.Hidden不能在Microsoft Word之类的单元格中隐藏某些字符。
但是通过以下代码,您可以将所有蓝色字符更改为很小的白色字符。

由于存在许多不同的“蓝色”颜色(不仅是RGB(0,0,255)),我的代码检查该颜色的蓝色部分是否高于红色和绿色部分。

Private Sub ChangeBlueTextToWhiteText()
    Dim ws As Worksheet
    Dim i As Integer
    Dim c As Range
    Dim currentColor As Long
    Dim r As Byte, g As Byte, b As Byte

    Set ws = ActiveSheet
    For Each c In ws.UsedRange.Cells
        If c.Characters.Count > 0 Then
            For i = 1 To c.Characters.Count

                currentColor = c.Characters(i, 1).Font.Color
                If currentColor < 0 Then currentColor = &H1000000 - currentColor
                r = currentColor Mod 256             ' red part
                g = currentColor \ 256 Mod 256       ' green part
                b = currentColor \ (2 ^ 16) Mod 256  ' blue part

                If b > r And b > g Then ' if blue part is largest, then it's kinda "blue"
                    c.Characters(i, 1).Font.Color = vbWhite
                End If
            Next i
        End If
    Next c
    Set ws = Nothing
End Sub

如果要使白色字符尽可能窄,则可以另外选择窄字体和小字体,如下所示:

c.Characters(i, 1).Font.Name = "Arial Narrow"
c.Characters(i, 1).Font.Size = 1
c.Characters(i, 1).Font.Subscript = True