Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2207|回复: 6

[已解决]请高手帮忙看看,有错在哪里,为何相同内容的不能显示红色

[复制链接]
发表于 2012-8-23 23:35 | 显示全部楼层 |阅读模式
Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
i = ActiveSheet.Cells(65536, ActiveSheet.UsedRange.Column).End(xlUp).Row
j = ActiveSheet.Cells(ActiveSheet.UsedRange.Row, 256).End(xlToLeft).Column
UsedRange.Select
If WorksheetFunction.CountIf(Range(Cells(1, 1), Cells(i, j)), Cells(1, 1)) > 1 Then
  Selection.Font.ColorIndex = 3
End If
End Sub
最佳答案
2012-8-23 23:57
本帖最后由 hwc2ycy 于 2012-8-24 00:16 编辑

  1. Private Sub CommandButton1_Click()
  2.      Dim i As Integer
  3.      Dim j As Integer
  4.      Dim myrow&
  5.      Dim mycol&
  6.      
  7.      Application.ScreenUpdating = False
  8.      i = ActiveSheet.Cells(65536, ActiveSheet.UsedRange.Column).End(xlUp).Row
  9.      j = ActiveSheet.Cells(ActiveSheet.UsedRange.Row, 256).End(xlToLeft).Column
  10.      ActiveSheet.UsedRange.Font.ColorIndex = 0
  11.      UsedRange.Select
  12.      For myrow = ActiveSheet.UsedRange.Row To i
  13.         For mycol = ActiveSheet.UsedRange.Column To j
  14.             If WorksheetFunction.CountIf(Range(Cells(ActiveSheet.UsedRange.Row, ActiveSheet.UsedRange.Column), Cells(i, j)), Cells(myrow, mycol)) > 1 Then
  15.                 Cells(myrow, mycol).Font.ColorIndex = 3
  16.             End If
  17.         Next
  18.     Next
  19.     Application.ScreenUpdating = True
  20. End Sub

复制代码
找出相同的内容并标识为红色.jpg
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-8-23 23:57 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hwc2ycy 于 2012-8-24 00:16 编辑

  1. Private Sub CommandButton1_Click()
  2.      Dim i As Integer
  3.      Dim j As Integer
  4.      Dim myrow&
  5.      Dim mycol&
  6.      
  7.      Application.ScreenUpdating = False
  8.      i = ActiveSheet.Cells(65536, ActiveSheet.UsedRange.Column).End(xlUp).Row
  9.      j = ActiveSheet.Cells(ActiveSheet.UsedRange.Row, 256).End(xlToLeft).Column
  10.      ActiveSheet.UsedRange.Font.ColorIndex = 0
  11.      UsedRange.Select
  12.      For myrow = ActiveSheet.UsedRange.Row To i
  13.         For mycol = ActiveSheet.UsedRange.Column To j
  14.             If WorksheetFunction.CountIf(Range(Cells(ActiveSheet.UsedRange.Row, ActiveSheet.UsedRange.Column), Cells(i, j)), Cells(myrow, mycol)) > 1 Then
  15.                 Cells(myrow, mycol).Font.ColorIndex = 3
  16.             End If
  17.         Next
  18.     Next
  19.     Application.ScreenUpdating = True
  20. End Sub

复制代码
回复

使用道具 举报

发表于 2012-8-24 00:17 | 显示全部楼层
代码重新帮你改了下。你的思路方向是对的。可是得没有考虑到每个单元格,还有就是COUNTIF的条件使用。
回复

使用道具 举报

发表于 2012-8-24 00:22 | 显示全部楼层
程序排错的过程中,多运用F8,立即窗口与DEBUG。
回复

使用道具 举报

 楼主| 发表于 2012-8-24 09:02 | 显示全部楼层
hwc2ycy 发表于 2012-8-24 00:22
程序排错的过程中,多运用F8,立即窗口与DEBUG。

非常感谢高手指导!谢谢!
回复

使用道具 举报

发表于 2012-8-24 09:04 | 显示全部楼层
感觉楼主问题考虑的过于复杂了,如下代码就可以完成了,如果是为了学习usedrange则另当别论。
  1. Sub aa()
  2. Dim r As Range, rng As Range
  3. Set rng = ActiveSheet.UsedRange
  4. For Each r In rng
  5.     r.Interior.ColorIndex = IIf(r <> "" And WorksheetFunction.CountIf(rng, r) > 1, 3, -4142)
  6. Next
  7. End Sub
复制代码
回复

使用道具 举报

发表于 2012-8-24 09:08 | 显示全部楼层
zm0115 发表于 2012-8-24 09:04
感觉楼主问题考虑的过于复杂了,如下代码就可以完成了,如果是为了学习usedrange则另当别论。

for each确实比较简单。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 03:44 , Processed in 0.482896 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表