ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求帮忙修改一下这段代码,为什么rng1.EntireRow.Copy。只能选中其中一条红色背景的...

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-5-21 17:38 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
求帮忙修改一下这段代码,为什么rng1.EntireRow.Copy。只能选中其中一条红色背景的行,而且不能自动粘贴到汇总表
但是如果修改为rng1.EntireRow.delect.却能跨表删除
我想要的效果是,除汇总表外,选中背景颜色为红色的所有行,粘贴在汇总表里面


Sub abc()
Dim rng As Range, rng1 As Range, ws As Worksheet
For Each ws In Worksheets
If ws.Name <> "汇总表" Then

Set rng = ws.Range("a1:g100") '有红色单元格的区域
For Each rng1 In rng
If rng1.Interior.Color = vbRed Then
rng1.EntireRow.Copy

Sheets("汇总表").Cells(k + 1, 1) = rng1.EntireRow.Copy
End If
Next
End If
Next
End Sub


2020年春季收费 -.rar

71.25 KB, 下载次数: 18

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-21 18:26 | 显示全部楼层

Sub TEST()
Dim ARR(1 To 9999, 1 To 10)
For I = 2 To Sheets.Count
    With Sheets(I)
        R = .Cells(Rows.Count, 1).End(xlUp).Row
        For J = 1 To R
            If .Cells(J, 1).Interior.ColorIndex = 6 Then
                N = N + 1
                For K = 1 To 10
                    ARR(N, K) = .Cells(J, K)
                Next
            End If
        Next
    End With
Next
[A3].Resize(9999, 10) = ARR
End Sub
这段代码如果行背景颜色为黄色就可以使用,但是将If .Cells(J, 1).Interior.ColorIndex = 6改为Cells(J, 1).Interior.ColorIndex = 255就运行不了,请问要怎么修改

TA的精华主题

TA的得分主题

发表于 2020-5-21 18:37 | 显示全部楼层
稍改了一下:
Dim rng As Range, rng1 As Range, ws As Worksheet
k = 1
For Each ws In Worksheets
If ws.Name <> "汇总表" Then
Set rng = ws.Range("a1:a100") '有红色单元格的区域
For Each rng1 In rng
If rng1.Interior.Color = vbRed Then
rng1.EntireRow.Copy
Sheets("汇总表").Cells(k, 1).PasteSpecial Paste:=xlPasteValues
k = k + 1
End If
Next
End If
Next

TA的精华主题

TA的得分主题

发表于 2020-5-21 18:42 | 显示全部楼层
ColorIndex  跟color范围不一样的
到56的

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-21 19:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub TEST()
Dim ARR(1 To 9999, 1 To 19)
For I = 2 To Sheets.Count
    With Sheets(I)
        R = .Cells(Rows.Count, 2).End(xlUp).Row
        For J = 1 To R
            If .Cells(J, 2).Interior.Color = 255 Then
                N = N + 1
                For K = 1 To 19
                    ARR(N, K) = .Cells(J, K)
                Next
            End If
        Next
    End With
Next
[A3].Resize(9999, 19) = ARR
End Sub
这个也行,我修改了一下

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-5-21 20:06 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-4-22 11:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub abc()
  2. Dim rng As Range, rng1 As Range, ws As Worksheet
  3. k = 2
  4. Sheets("汇总表").Range("A2:x10000").ClearContents
  5. For Each ws In Worksheets
  6. If ws.Name <> "汇总表" Then

  7. Set rng = ws.Range("b15:b10000") '有红色单元格的区域
  8. For Each rng1 In rng
  9. If rng1.Interior.Color = vbYellow Then
  10. rng1.EntireRow.Copy
  11. Sheets("汇总表").Cells(k, 1).PasteSpecial Paste:=xlPasteValues
  12. k = k + 1
  13. End If
  14. Next
  15. End If
  16. Next
  17. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 09:57 , Processed in 0.052616 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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