Excel精英培训网

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

[已解决]求解:利用vba取得所选任意区域的非空单元格,越快越好

  [复制链接]
发表于 2011-11-24 15:08 | 显示全部楼层 |阅读模式
5学分
希望得到任意的连续或不连续的所选择的区域的非空单元格,并将非空单元格的颜色设为红色,请教VBA的实现代码,一定要快,数据量好大的,求高手!
最佳答案
2011-11-27 18:04
借用Dj_soo的思路,完善一下。
  1. Union(Selection.SpecialCells(xlCellTypeFormulas), Selection.SpecialCells(xlCellTypeConstants)).Interior.Color = vbRed
复制代码
完善理由:Dj_soo的思路再去色的那一步会影响其他单元格原有的底色。

最佳答案

查看完整内容

Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim rng As Range For Each rng In Target If Len(rng) Then If s$ = "" Then s = rng.Address(0, 0) Else s = s & "," & rng.Address(0, 0) End If If Len(s) > 200 Then Range(s).Interior.Color = vbRed s = "" End If End If Next If Len(s) Then Range(s) ...
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-11-24 15:08 | 显示全部楼层
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rng As Range
For Each rng In Target
    If Len(rng) Then
       If s$ = "" Then
          s = rng.Address(0, 0)
       Else
          s = s & "," & rng.Address(0, 0)
       End If
       If Len(s) > 200 Then
          Range(s).Interior.Color = vbRed
          s = ""
       End If
    End If
Next
If Len(s) Then Range(s).Interior.Color = vbRed
End Sub
回复

使用道具 举报

发表于 2011-11-24 15:48 | 显示全部楼层
上清宫主 发表于 2011-11-24 15:28
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rng As Range
For Each rng In Targ ...

用定位不如这个快吗?
回复

使用道具 举报

发表于 2011-11-24 15:55 | 显示全部楼层
录制后修改一下:
  1. Sub Macro1()
  2. '
  3. ' Macro1 Macro
  4. ' Macro recorded 2011-11-24 by qdawgao
  5. '

  6. '
  7.     With Selection
  8.         .Interior.Color = vbRed
  9.         .SpecialCells(xlCellTypeBlanks).Interior.Color = xlNone
  10.     End With
  11. End Sub
复制代码
回复

使用道具 举报

发表于 2011-11-24 15:55 | 显示全部楼层
就是就是,啷个一下没想到起定位呢
回复

使用道具 举报

发表于 2011-11-24 15:56 | 显示全部楼层
上清宫主 发表于 2011-11-24 15:55
就是就是,啷个一下没想到起定位呢

嘿嘿,给弄出来了{:011:}
回复

使用道具 举报

 楼主| 发表于 2011-11-24 17:14 | 显示全部楼层
汗,我需要的是不连续区域的非空单元格啊,还是没有实现;定位以后,是不是还要一个一个单元格循环变为红色吗?还是没解决啊
回复

使用道具 举报

发表于 2011-11-24 20:01 | 显示全部楼层
hunpo 发表于 2011-11-24 17:14
汗,我需要的是不连续区域的非空单元格啊,还是没有实现;定位以后,是不是还要一个一个单元格循环变为红色 ...

我的代码不行?不可能吧!
回复

使用道具 举报

发表于 2011-11-24 20:02 | 显示全部楼层
邪了门了,我用的代码都好好的怎么老不行?上附件!
回复

使用道具 举报

 楼主| 发表于 2011-11-25 11:54 | 显示全部楼层
Dj_soo,还请出示你的代码一用阿
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-2 05:27 , Processed in 0.287414 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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