ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 表格的形式变了,要如何改写代码?请求老师帮忙。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-8-15 23:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
。。。。。

新表.rar

49.75 KB, 下载次数: 5

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-8-16 11:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学习各位老师到代码,谢谢!请参考
Sub cxhongse()
Call weimss(Sheet2.Range("bi3:bz3"), 255, 1)
End Sub

Sub cxhuangse()
Call weimss(Sheet2.Range("bi9:br9"), 65535, 2)
End Sub

Sub cxlvse()
Call weimss(Sheet2.Range("bi15:br15"), 5287936, 3)
End Sub

Sub qchu()
    Sheet2.Range("B6:AN23").Interior.ColorIndex = 0
End Sub
Sub weimss(bjj As Range, ys, jss) '***
Dim i, j, k As Integer
Dim bj, kb
k = 0
kb = Range("B6:AM23")
    For Each bs In Range("B6:AM23")
        If bs.Interior.Color = ys Then bs.Interior.PatternColor = xlNone
    Next
bj = bjj
    For i = 2 To UBound(bj, 2)
        If bj(1, i) <> 0 Then
            For j = 1 To UBound(kb, 2)
If kb(bj(1, i), j) = bj(1, 1) Then Cells(bj(1, i) + 5, j + 1).Interior.Color = ys: k = k + 1
            Next
        End If
    Next
    Choose(jss, Sheet2.[BL4], Sheet2.[BL10], Sheet2.[BL16]) = k
End Sub

TA的精华主题

TA的得分主题

发表于 2018-8-16 11:32 | 显示全部楼层
请参考
原表和新表.rar (52.25 KB, 下载次数: 3)

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-16 12:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

老师,谢谢您!
     还有个需求我原先没说清楚,就是:第二次再用某按钮查询时要把第一次填的色清掉(也就是要还原为无色)。例:用“查询(红)”按钮查到A老师的课都填红色了,再用该按钮查B老师的课时,要先把A老师的原红色课变为无色,(但同时要注意别把黄色和绿色也变为无色,)再为B老师的课填红色。其他的两个按钮也要这样。
        恳请您再帮忙修改一下,谢谢

TA的精华主题

TA的得分主题

发表于 2018-8-16 12:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
小绿草 发表于 2018-8-16 12:37
老师,谢谢您!
     还有个需求我原先没说清楚,就是:第二次再用某按钮查询时要把第一次填的色清掉( ...

是按照你的要求啊,换老师的时候,原颜色清掉了,麻烦按我发的附件再试一下

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-16 13:03 | 显示全部楼层
老师,谢谢您!
    我想三个按钮一起使用,但我不会代码,恳请您帮忙。
要注意第二次再用某按钮查询时要把第一次填的色清掉(也就是要还原为无色)。(例见上面)

TA的精华主题

TA的得分主题

发表于 2018-8-16 13:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
小绿草 发表于 2018-8-16 13:03
老师,谢谢您!
    我想三个按钮一起使用,但我不会代码,恳请您帮忙。
要注意第二次再用某按钮查询时要 ...

抱歉,我确定是按照你的要求写的,回复附件在11楼,只有一个新表那个,麻烦再看一下

TA的精华主题

TA的得分主题

发表于 2018-8-16 13:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
小绿草 发表于 2018-8-16 13:03
老师,谢谢您!
    我想三个按钮一起使用,但我不会代码,恳请您帮忙。
要注意第二次再用某按钮查询时要 ...

或者3楼代码,按 红、黄、绿 三段代码分别放在三个按钮上

TA的精华主题

TA的得分主题

发表于 2018-8-16 13:43 | 显示全部楼层
  1. Option Explicit

  2. Dim rgRed As Range, rgYellow As Range, rgGreen As Range
  3. Dim arrTemp As Variant

  4. '红色
  5. Sub FindRed()
  6.     arrTemp = Sheets("高一课程表").Range("BI3:BR3")
  7.     Set rgRed = Nothing
  8.     FindReturnRange arrTemp, rgRed
  9. End Sub

  10. '黄色
  11. Sub FindYellow()
  12.     arrTemp = Sheets("高一课程表").Range("BI9:BR9")
  13.     Set rgYellow = Nothing
  14.     FindReturnRange arrTemp, rgYellow
  15. End Sub

  16. '绿色
  17. Sub FindGreen()
  18.     arrTemp = Sheets("高一课程表").Range("BI15:BR15")
  19.     Set rgGreen = Nothing
  20.     FindReturnRange arrTemp, rgGreen
  21. End Sub

  22. '查找、设置过程
  23. Function FindReturnRange(arrCondition As Variant, rgReturn As Range)
  24.     Dim shSource As Worksheet
  25.     Dim arr As Variant
  26.     Dim strFind As String, lngRowID(1 To 9) As Long
  27.     Dim lngRow As Long, lngCol As Long
  28.     Dim rgTemp As Range
  29.    
  30.     Set shSource = Sheets("高一课程表")
  31.    
  32.     strFind = arrCondition(1, 1)
  33.     For lngRow = 1 To 9
  34.         lngRowID(lngRow) = arrCondition(1, lngRow + 1)
  35.     Next
  36.    
  37.     arr = shSource.Range("B6:AO23")
  38.    
  39.     For lngRow = 1 To 9
  40.         If lngRowID(lngRow) > 0 Then
  41.             For lngCol = 1 To UBound(arr)
  42.                 If arr(lngRowID(lngRow), lngCol) = strFind Then
  43.                     If rgTemp Is Nothing Then
  44.                         Set rgTemp = shSource.Cells(lngRowID(lngRow) + 5, lngCol + 1)
  45.                     Else
  46.                         Set rgTemp = Union(rgTemp, shSource.Cells(lngRowID(lngRow) + 5, lngCol + 1))
  47.                     End If
  48.                 End If
  49.             Next
  50.         End If
  51.     Next
  52.    
  53.     If rgTemp Is Nothing Then
  54.         FindReturnRange = False
  55.     Else
  56.         Set rgReturn = rgTemp
  57.         FindReturnRange = True
  58.     End If
  59.    
  60.     shSource.Range("B6:AO23").Interior.ColorIndex = 0
  61.     If Not rgRed Is Nothing Then rgRed.Interior.ColorIndex = 3
  62.     If Not rgGreen Is Nothing Then rgGreen.Interior.ColorIndex = 10
  63.     If Not rgYellow Is Nothing Then rgYellow.Interior.ColorIndex = 6
  64. End Function


复制代码

TA的精华主题

TA的得分主题

发表于 2018-8-16 13:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
代码审核中,见附件: 新表.rar (29.18 KB, 下载次数: 8)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 08:01 , Processed in 0.025669 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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