ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 老师,能否教下我下面代码的含义,谢谢

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-2-7 09:21 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
请教各位老师,能否教下我下面两段代码的意思,谢谢


Sub 筛选()
Application.ScreenUpdating = False
Dim ob As OLEObject
yf = [h1]
If yf = "" Then MsgBox "请输入月份!": End
r = Cells(Rows.Count, 2).End(xlUp).Row
AutoFilterMode = False
Rows(2).AutoFilter
For Each ob In ActiveSheet.OLEObjects
    If ob.Object.Value = True And Left(ob.Name, 12) = "OptionButton" Then
        If ob.Object.Caption = "全部" Then GoTo 10
        mc = Replace(ob.Object.Caption, "公司", "")
        Range("a2:h" & r).AutoFilter Field:=2, Criteria1:=yf, Operator:=xlAnd
        Range("a2:h" & r).AutoFilter Field:=3, Criteria1:=mc, Operator:=xlAnd
        Exit For
    End If
Next
10:
Application.ScreenUpdating = True
End Sub






Sub Macro1()
'
' Macro1 Macro
'

'
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="1,2,3"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .IMEMode = xlIMEModeNoControl
        .ShowInput = True
        .ShowError = True
    End With
End Sub


TA的精华主题

TA的得分主题

发表于 2023-2-7 11:23 | 显示全部楼层
对完全没有VBA基础的人解释代码,就如同一个老师要教一个小学生学高等数学,你知道的会有多难教。     
如果一句也不懂又有强烈兴趣学VBA的,建议从看一本VBA入门书开始学习。

TA的精华主题

TA的得分主题

发表于 2023-2-7 11:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub 筛选()                                                                      '子过程 筛选()
  2.     Application.ScreenUpdating = False                                          '关闭屏幕刷新
  3.     Dim ob As OLEObject                                                         '定义局部变量 ob 为OLEObject
  4.     yf = [h1]                                                                   'yf=[h1]
  5.     If yf = "" Then MsgBox "请输入月份!": End                                  '如果yf=空值 那么 <消息框>:"请输入月份!":结束
  6.     r = Cells(Rows.Count, 2).End(xlUp).Row                                      'r=单元格坐标(行数值,2 )的<末端>(方向向上 )的行标
  7.     AutoFilterMode = False                                                      'AutoFilterMode=False
  8.     Rows(2).AutoFilter                                                          '<行>坐标(2 )的自动筛选
  9.     For Each ob In ActiveSheet.OLEObjects                                       '设定循环变量的范围为:每一个ob 位于  活动工作表的OLEObjects
  10.         If ob.Object.Value = True And Left(ob.Name, 12) = "OptionButton" Then   '如果 ob的对象的值=True 并且 <截取字符串左侧>( ob的名称,12)="OptionButton" 那么
  11.             If ob.Object.Caption = "全部" Then GoTo 10                          '如果 ob的对象的标题="全部" 那么  跳至10
  12.             mc = Replace(ob.Object.Caption, "公司", "")                         'mc=<替换字符串>( ob的对象的标题,"公司","")
  13.             Range("a2:h" & r).AutoFilter Field:=2, Criteria1:=yf, Operator:=xlAnd  '单元格区域("a2:h" & r )的自动筛选Field=2,Criteria1=yf,操作符=xlAnd
  14.             Range("a2:h" & r).AutoFilter Field:=3, Criteria1:=mc, Operator:=xlAnd  '单元格区域("a2:h" & r )的自动筛选Field=3,Criteria1=mc,操作符=xlAnd
  15.             Exit For                                                            '退出当前for循环,执行NEXT后面的语句
  16.         End If                                                                  'If判断过程结束
  17.     Next                                                                        '下一个
  18.     10:                                                                         '10:
  19.     Application.ScreenUpdating = True                                           '开启屏幕刷新
  20. End Sub                                                                         '子过程结束

  21. Sub Macro1()                                                                    '子过程 Macro1()
  22.     With Selection.Validation                                                   '工作于  选中的数据有效性
  23.         .Delete                                                                 '<With对象>的删除
  24.         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=        xlBetween, Formula1:="1,2,3"  
  25. '<With对象>的添加 类型=值必须存在于指定列表中,警告类型=停止图标,操作符=介于,公式1="1,2,3"

  26.         .IgnoreBlank = True                                                     '<With对象>的忽略空白值=True
  27.         .InCellDropdown = True                                                  '<With对象>的InCellDropdown=True
  28.         .InputTitle = ""                                                        '<With对象>的“输入信息”对话框的标题=空值
  29.         .ErrorTitle = ""                                                        '<With对象>的出错警告对话框的标题=空值
  30.         .InputMessage = ""                                                      '<With对象>的输入信息提示=空值
  31.         .ErrorMessage = ""                                                      '<With对象>的出错警告对话框的错误信息=空值
  32.         .IMEMode = xlIMEModeNoControl                                           '<With对象>的输入法模式=无控制
  33.         .ShowInput = True                                                       '<With对象>的ShowInput=True
  34.         .ShowError = True                                                       '<With对象>的ShowError=True
  35.     End With                                                                    'With语句结束
  36. End Sub                                                                         '子过程结束
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-7 12:34 | 显示全部楼层
蓝桥玄霜 发表于 2023-2-7 11:23
对完全没有VBA基础的人解释代码,就如同一个老师要教一个小学生学高等数学,你知道的会有多难教。     
如 ...

谢谢老师,正在学习中

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-7 12:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-2-7 13:57 | 显示全部楼层
上一段是筛选的,下一段是添加数据验证(下拉列表)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 10:45 , Processed in 0.034806 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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