Как добавить условное форматирование в мой существующий код VB в. MS Word? - PullRequest
0 голосов
/ 16 мая 2019

У меня есть таблица в MS Word, состоящая из элементов раскрывающегося списка, а также столбцов, которые отображают и выводят значения в зависимости от комбинации выбранных элементов раскрывающегося списка.Я пытаюсь заполнить ячейки результатов цветами в зависимости от их содержимого.Например.что-нибудь, начинающееся с> = 70, будет окрашено в красный цвет.

Как бы я поступил так?

Я знаю, что это должно быть сделано в Excel, но я должен работать с тем, что у меня естьК сожалению.

Я попытался использовать макрос и изменил мои цвета, однако мой существующий код VB (указанный ниже затем перестал работать).

Private Sub Document_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
Dim CField As String, LField As String, RField As String, CText As String, LText As String, CRate As Double, LRate As Double, RRate As Double, RCat As String, RCatField As String
Select Case CC.Title
Case "C1", "L1"
CField = "C1"
LField = "L1"
RField = "R1"
RCatField = "RR1"

Case "C2", "L2"
CField = "C2"
LField = "L2"
RField = "R2"
RCatField = "RR2"




Case Else
Exit Sub
End Select

CText = Left(ActiveDocument.SelectContentControlsByTitle(CField).Item(1).Range.Text, 1)
LText = Left(ActiveDocument.SelectContentControlsByTitle(LField).Item(1).Range.Text, 1)
    If Not IsNumeric(CText) Then
With ActiveDocument.SelectContentControlsByTitle(RField)(1)
   .LockContents = False
   .Range.Text = ""
   .LockContents = True
End With
With ActiveDocument.SelectContentControlsByTitle(RCatField)(1)
   .LockContents = False
   .Range.Text = ""
   .LockContents = True
End With
      End If
        If Not IsNumeric(LText) Then
      Exit Sub
      End If
      LRate = LText
      CRate = CText
      RRate = ((CRate * 3) + (LRate * 2)) * 4
      Select Case RRate
      Case Is < 41
      RCat = "Low"
      Case Is < 55
      RCat = "Moderate"
      Case Is < 70
      RCat = "High"
      Case Is >= 70
        RCat = "Catastrophic"
      End Select




With ActiveDocument.SelectContentControlsByTitle(RField)(1)
   .LockContents = False
   .Range.Text = RRate
   .LockContents = True
End With
With ActiveDocument.SelectContentControlsByTitle(RCatField)(1)
   .LockContents = False
   .Range.Text = RCat
   .LockContents = True
End With
End Sub

1 Ответ

0 голосов
/ 17 мая 2019

Попробуйте:

With ActiveDocument.SelectContentControlsByTitle(RCatField)(1)
  .LockContents = False
  .Range.Text = RCat
  With .Range.Cells(1).Shading
    Select Case RCat
      Case "Low": .BackgroundPatternColor = wdColorBrightGreen
      Case "Moderate": .BackgroundPatternColor = wdColorYellow
      Case "High": .BackgroundPatternColor = wdColorOrange
      Case "Catastrophic":: .BackgroundPatternColor = wdColorRed
      Case Else: .BackgroundPatternColor = wdColorAutomatic
    End Select
  End With
  .LockContents = True
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...