ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 学习vba中求大神指点这穿代码的每一句的意思

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-8-2 20:10 | 显示全部楼层 |阅读模式
Private Sub Worksheet_Change(ByVal Target As Range)
Dim brr(1 To 9999, 1 To 11)
Application.ScreenUpdating = False
If Target.Address(0, 0) = "F1" Then
If Len(Target) = 0 Then
Exit Sub
Else
arr = Sheet2.UsedRange
For i = 5 To UBound(arr)
If arr(i, 5) = Target Then
m = m + 1
For j = 1 To 11
brr(m, j) = arr(i, j + 1)
Next
End If
Next
If m Then Range("a7:k" & Rows.Count).ClearContents: [a7].Resize(m, 11) = brr
End If
End If
Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

发表于 2019-8-2 21:30 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
在论坛泡1000  个小时,就明白了

TA的精华主题

TA的得分主题

发表于 2019-8-2 21:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
欢迎新朋友
楼主这代码要结合附件看吧,表格change事件。
当前f1单元格输入数据的时候,就要遍历Sheet2里的数据,进行对比
提取数据
没有附件,简要描述

TA的精华主题

TA的得分主题

发表于 2019-8-2 21:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这代码谁写的,好歹缩进一下,看着真累                                                                                   

TA的精华主题

TA的得分主题

发表于 2019-8-2 22:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
逐句說說到何時,買本書本學學

TA的精华主题

TA的得分主题

发表于 2019-8-2 23:51 | 显示全部楼层
liulang0808 发表于 2019-8-2 21:36
欢迎新朋友
楼主这代码要结合附件看吧,表格change事件。
当前f1单元格输入数据的时候,就要遍历Sheet2里 ...

大神,能来我刚发的贴子指教一二吗?

TA的精华主题

TA的得分主题

发表于 2019-8-3 08:27 | 显示全部楼层
凑合看吧
Private Sub Worksheet_Change(ByVal Target As Range)'私有Worksheet_Change事件,Target As Range
Dim brr(1 To 9999, 1 To 11)'申明二维数组
Application.ScreenUpdating = False'关闭屏幕刷新
If Target.Address(0, 0) = "F1" Then'假如选中单元格[F1]
If Len(Target) = 0 Then'假如为空
Exit Sub'退出
Else'否则
arr = Sheet2.UsedRange'定义数组arr
For i = 5 To UBound(arr)'使i从5到aar数组末位
If arr(i, 5) = Target Then'假如arr(i,5)=选中单元格值
m = m + 1'm=m+1
For j = 1 To 11'使j从1到11
brr(m, j) = arr(i, j + 1)'数组brr(m, j) 赋值为 arr(i, j + 1)
Next'下一个j
End If'结束if arr(i, 5) = Target Then
Next'下一个i
If m Then Range("a7:k" & Rows.Count).ClearContents: [a7].Resize(m, 11) = brr'目标区域赋值
End If'结束If Len(Target) = 0 Then
End If'结束If Target.Address(0, 0) = "F1" Then
Application.ScreenUpdating = True'启用屏幕刷新
End Sub'结束

TA的精华主题

TA的得分主题

发表于 2019-8-3 17:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
用论坛里的VBA程序解释器可以生成VBA释义,效果如下:
Private Sub Worksheet_Change(ByVal Target As Range)                                  '私有的子程序 Worksheet_Change(变量Target 为 单元格区域)
Dim brr(1 To 9999, 1 To 11)                                                          '定义变量 brr(1到9999,1到11)
Application.ScreenUpdating = False                                                   'Application.ScreenUpdating=False
If Target.Address(0, 0) = "F1" Then                                                  '如果 Target.Address(0,0)="F1" 则执行
    If Len(Target) = 0 Then                                                           '如果 Len(Target)=0 则执行
       Exit Sub                                                                       '退出子程序
       Else                                                                           '否则
       arr = Sheet2.UsedRange                                                         'arr=Sheet2.UsedRange
       For i = 5 To UBound(arr)                                                       '设定变量范围为i=5到UBound(arr)
          If arr(i, 5) = Target Then                                                  '如果 arr(i,5)=Target 则执行
             m = m + 1                                                                'm=m+1
             For j = 1 To 11                                                          '设定变量范围为j=1到11
                brr(m, j) = arr(i, j + 1)                                             'brr(m,j)=arr(i,j+1)
             Next                                                                     '下一个
          End If                                                                      'End如果
       Next                                                                           '下一个
       If m Then Range("a7:k" & Rows.Count).ClearContents: [a7].Resize(m, 11) = brr   '如果 m 则执行 单元格区域("a7:k" & 行数值).ClearContents:[a7的Resize(m,11)=brr
       End If                                                                         'End如果
    End If                                                                            'End如果
    Application.ScreenUpdating = True                                                 'Application.ScreenUpdating=True
End Sub                                                                              'End子程序
                                                                                      '

VBA程序解释器_修正版.zip

115.89 KB, 下载次数: 7

TA的精华主题

TA的得分主题

发表于 2019-8-3 23:17 | 显示全部楼层
lingdo2001 发表于 2019-8-3 17:14
用论坛里的VBA程序解释器可以生成VBA释义,效果如下:
Private Sub Worksheet_Change(ByVal Target As Ra ...

VBA程序解释器作用强大。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 07:07 , Processed in 0.034629 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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