Excel VBA函数使单元格文本“BOLD”不起作用

时间:2017-09-21 21:19:51

标签: excel vba excel-vba

Public Function highlight_text(Search)
  Dim rng As Range
  Dim cell As Range
  Set rng = Range("A2:H32")

  For Each cell In rng
      If cell.text = Search Then
          cell.Font.ColorIndex = 3
          cell.Font.Name = "Arial"
          cell.Font.Size = 14
          cell.Font.Bold = True
      Else
          cell.Font.Bold = False
          cell.Font.Size = 11
          cell.Font.ColorIndex = 1
      End If
  Next cell
End Function

上面的函数在'mouseover'一个单元格上调用,它设法将正确的单元格设置为RED颜色,但不会使文本变为粗体

2 个答案:

答案 0 :(得分:5)

您无法从工作表中调用函数并更改单元格的格式。

(甚至颜色都在变化的事实令人困惑)

由于这不需要是一个函数,它不会返回任何内容,你不能在工作表中使用它,我们可以使它成为一个子:

Public Sub highlight_text(Search)
  Dim rng As Range
  Dim cell As Range
  Set rng = Range("A2:H32")

  For Each cell In rng
      If cell.Text = Search Then
          cell.Font.ColorIndex = 3
          cell.Font.Name = "Arial"
          cell.Font.Size = 14
          cell.Font.Bold = True
      Else
          cell.Font.Bold = False
          cell.Font.Size = 11
          cell.Font.ColorIndex = 1
      End If
  Next cell
End Sub

使用Worksheet_Change事件(或其他一些事件)来调用sub:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A2:H32")) Is Nothing Then
    highlight_text (Target.Text)
End If
End Sub

将这两者放在您希望代码运行的工作表代码中。

现在,当您单击范围内的任何单元格时,将突出显示相同的单元格。

enter image description here

答案 1 :(得分:-1)

在这种情况下,这是一个很好的解决方案。但我对你无法改变函数中单元格格式的说法感到困惑。试过这个确认一下。它工作正常。

Function boldit() As String
Dim theCell As String  

theCell = "Q8"
Range(theCell).Value = "XorY"
Range(theCell).Font.Color = RGB(255, 0, 0)
Range(theCell).Font.Bold = True

End Function

我感兴趣的原因是,在一个真正的函数中,我编写了相同.Font.Bold语句不起作用(而.Font.Color确实如此) 任何其他想法为什么.Font.Bold = True可能不起作用