EXCEL用vba如何在表中,当点击任意一个单元格,这个表中与点击单元格内容相同的所有单元格的背景色改变。
3个回答
展开全部
告诉楼主一个不幸的消息,点击任意单元格,更改背景色可以做,但程序会进入死循环,因为每次更改某个单元格的颜色时,相当于又触发了一次点击单元格的事件。
如果是输入某个值,或更改某个值,相同的值的单元格变色,这个可以做。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strX As String
Dim X, Y, I, J, C As Long
On Error GoTo Err
Randomize
C = Int(Rnd() * 56) + 1
X = ActiveCell.SpecialCells(xlLastCell).Row
Y = ActiveCell.SpecialCells(xlLastCell).Column
strX = Target.Value
For I = 1 To X
For J = 1 To Y
If Cells(I, J) = strX Then Cells(I, J).Interior.ColorIndex = C
Next J
Next I
Exit Sub
Err:
End Sub
如果是输入某个值,或更改某个值,相同的值的单元格变色,这个可以做。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim strX As String
Dim X, Y, I, J, C As Long
On Error GoTo Err
Randomize
C = Int(Rnd() * 56) + 1
X = ActiveCell.SpecialCells(xlLastCell).Row
Y = ActiveCell.SpecialCells(xlLastCell).Column
strX = Target.Value
For I = 1 To X
For J = 1 To Y
If Cells(I, J) = strX Then Cells(I, J).Interior.ColorIndex = C
Next J
Next I
Exit Sub
Err:
End Sub
展开全部
简单代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.Color = xlNone
Set Arr = Target
If Target.Count = 1 Then
Target.Interior.Color = vbYellow
If Target.Value <> "" Then
For Each Rng In Sheet1.UsedRange
If Rng.Value = Target.Value Then Set Arr = Union(Arr, Rng)
Next
Arr.Interior.Color = vbYellow
End If
End If
End Sub
详细操作可以关注我的百度空间!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.Color = xlNone
Set Arr = Target
If Target.Count = 1 Then
Target.Interior.Color = vbYellow
If Target.Value <> "" Then
For Each Rng In Sheet1.UsedRange
If Rng.Value = Target.Value Then Set Arr = Union(Arr, Rng)
Next
Arr.Interior.Color = vbYellow
End If
End If
End Sub
详细操作可以关注我的百度空间!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用vba配合条件格式再加一个辅助单元格。
当点击一个单元格时会产生SelectionChange事件,写代码使辅助单元格的数值与被选单元格数值相同,然后在需变色区域设置条件格式,当与辅助单元格数值相同那么就可以变色了。
当点击一个单元格时会产生SelectionChange事件,写代码使辅助单元格的数值与被选单元格数值相同,然后在需变色区域设置条件格式,当与辅助单元格数值相同那么就可以变色了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询