Как скрыть цветной текст из Excel с помощью макроса VBA - PullRequest
0 голосов
/ 06 февраля 2019

Как скрыть текст из excel с помощью макроса vba?

1 Ответ

0 голосов
/ 06 февраля 2019

Скрыть полные строки или столбцы

Вы можете скрыть полные строки или столбцы, например, так:

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

Вы также можете группировать строки или столбцы и устанавливать уровень структуры, чтобы скрыть их:

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

Одна ячейка не может быть скрыта (она может быть только удалена, но это может переместить другие ячейки под ней).

Скрыть части ячейки

К сожалению, вы можете не скрыть некоторые символы в ячейке, как в Microsoft Word, с помощью Font.Hidden.
Но с помощью следующего кода вы можете изменить все синие символы на очень маленькие белые.

Поскольку существует много разных «синих» цветов (не только 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...