ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 638|回复: 7

[讨论] 连续区域取范围

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-1-1 12:36 | 显示全部楼层 |阅读模式
总感觉自己写的很麻烦  请问大家都是怎么解的
1672547575335.jpg

工作簿21.rar

17.1 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2023-1-1 14:43 | 显示全部楼层
  1. Sub aa()
  2.     Dim rng As Range, cell As Range, lastColor, beginRow, endRow
  3.    
  4.     Set rng = Cells(UsedRange(1).Row, "B").Resize(UsedRange.Rows.Count + 1)
  5.    
  6.     For Each cell In rng
  7.    
  8.         If endRow > 0 And cell.Interior.Color <> lastColor Then
  9.             Cells(Rows.Count, "f").End(xlUp).Offset(1) = "B" & beginRow & "-" & endRow
  10.             endRow = 0
  11.         End If
  12.    
  13.         If cell.Interior.Color <> rgbWhite Then
  14.             If cell.Interior.Color = lastColor Then
  15.                 endRow = cell.Row
  16.             Else
  17.                 beginRow = cell.Row
  18.             End If
  19.         End If
  20.         
  21.         lastColor = cell.Interior.Color
  22.         
  23.     Next

  24. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-1-1 16:12 | 显示全部楼层
  1. Sub aa()
  2.     Dim rng As Range, cell As Range, lastColor, beginRow, endRow
  3.    
  4.     Set rng = Cells(UsedRange(1).Row, "B").Resize(UsedRange.Rows.Count + 1)
  5.    
  6.     For Each cell In rng
  7.    
  8.         If beginRow And cell.Interior.Color <> lastColor Then
  9.             Cells(Rows.Count, "f").End(xlUp).Offset(1) = "B" & beginRow & "-" & cell.Row - 1
  10.             beginRow = 0
  11.         End If
  12.    
  13.         If cell.Interior.Color <> rgbWhite _
  14.         And cell.Interior.Color <> lastColor Then
  15.             beginRow = cell.Row
  16.         End If
  17.         
  18.         lastColor = cell.Interior.Color
  19.         
  20.     Next

  21. End Sub
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-1 16:57 | 显示全部楼层

If beginRow And cell.Interior.Color <> lastColor
请问 这句里面的 beginRow 没加判断 是什么意思
如果beginRow 怎么样?

TA的精华主题

TA的得分主题

发表于 2023-1-1 21:37 | 显示全部楼层
  • 变量未赋值的时候,它的布尔值是 False
  • 0 的布尔值是 False
  • 正整数的布尔值是 True


  1. Sub test()
  2.     Debug.Print CBool(Empty) ' False
  3.     Debug.Print CBool(0)     ' False
  4.     Debug.Print CBool(123)   ' True
  5. End Sub
复制代码


类似地,比如 InStr 函数返回的结果是 0 或者正整数,可以直接写 If InStr(1, "abc", "c"),不需要写成 If InStr(1, "abc", "c") > 0

TA的精华主题

TA的得分主题

发表于 2023-1-1 21:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub TEST_A1()
Dim B As Range, A As Range, CC, CK, n&
For Each B In Intersect(ActiveSheet.UsedRange, Range("b:b"))
    CC = B.Interior.ColorIndex
    If CC <> CK Then CK = CC: Set A = B
    If B(2).Interior.ColorIndex <> CK And CK <> -4142 Then
       n = n + 1
       Cells(n, "e") = Range(A, B).Address(0, 0)
    End If
b01: Next
End Sub

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-1-1 22:16 | 显示全部楼层
参与一下。。。

工作簿21.rar

20.99 KB, 下载次数: 12

评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-1-1 22:31 | 显示全部楼层
tmplinshi 发表于 2023-1-1 21:37
  • 变量未赋值的时候,它的布尔值是 False
  • 0 的布尔值是 False
  • 正整数的布尔值是 True

  • 谢谢~~~~~~~~~~~~~~~~~~
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    手机版|关于我们|联系我们|ExcelHome

    GMT+8, 2024-11-20 01:23 , Processed in 0.037092 second(s), 12 queries , Gzip On, MemCache On.

    Powered by Discuz! X3.4

    © 1999-2023 Wooffice Inc.

    沪公网安备 31011702000001号 沪ICP备11019229号-2

    本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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