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颜色,但不会使文本变为粗体
答案 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
将这两者放在您希望代码运行的工作表代码中。
现在,当您单击范围内的任何单元格时,将突出显示相同的单元格。
答案 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可能不起作用