Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2978|回复: 9

[已解决]要利用工作表事件实现

[复制链接]
发表于 2013-10-11 11:56 | 显示全部楼层 |阅读模式
遇到一问题未能解决,求助各位看一下,谢谢!
最佳答案
2013-10-11 13:46
jy369 发表于 2013-10-11 12:45
,好!
烦请讲解一下每一行代码的注释,谢谢!
  1. Private Sub Worksheet_Change(ByVal Target As Range)                 '工作表改变时间,当Worksheet发生改变时激活事件,并返回活动单元格变量Target 变量类型 为 单元格区域
  2.     If Target.Column = 1 And Target.Count = 1 And Target.Row > 1 Then   '如果 Target.Column=1 并且 Target.Count=1 并且 Target.Row>1 则执行
  3.         With Sheets("S")                                                 '在 指定工作表S 执行一系列的语句
  4.             ROW1 = .Range("A" & Rows.Count).End(xlUp).Row                    '返回A列最后一个非空单元格所在行的行号w
  5.             ARR1 = .Range("A2:C" & ROW1)                                     '把单元格区域 A2到C列ROW1 的内容赋值给 数组ARR1,也就是把S工作表的内容赋值到数组ARR1
  6.         End With                                                         'End 对应于 With Sheets("S")
  7.         For I = 1 To UBound(ARR1)                                        '开始循环,设定变量范围为I=1到UBound(ARR1)  其中 UBound 返回 ARR1数组的最大下标
  8.             If Target.Value = ARR1(I, 1) Then                             '如果 Target.Value=ARR1(I,1) 则执行,也就是 活动单元格内容 与数组组ARR1的首列(规格)判断
  9.                 Target.Offset(0, 3) = ARR1(I, 2)                           '把 ARR1(I,2) 的值也就是 材料品名,写入活动单元格右偏移3列的单元格,也就是写入D列
  10.                 Target.Offset(0, 4) = ARR1(I, 3)                           '把 ARR1(I,3) 的值也就是 理论重量,写入活动单元格右偏移4列的单元格,也就是写入E列
  11.                 Exit For                                                   '退出 循环
  12.             End If                                                        'End IF
  13.         Next I                                                           '下一个I,重新执行循环
  14.     End If                                                              'End  IF
  15. End Sub                                                             'End 事件
复制代码

材料表.zip

58.79 KB, 下载次数: 7

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-10-11 12:09 | 显示全部楼层
回复

使用道具 举报

发表于 2013-10-11 12:10 | 显示全部楼层
附件请参考!

材料表.zip

61.65 KB, 下载次数: 9

回复

使用道具 举报

 楼主| 发表于 2013-10-11 12:45 | 显示全部楼层
,好!
烦请讲解一下每一行代码的注释,谢谢!
回复

使用道具 举报

发表于 2013-10-11 13:32 | 显示全部楼层
去下载一个代码解释器吧!
http://www.excelpx.com/thread-186721-1-1.html
回复

使用道具 举报

发表于 2013-10-11 13:46 | 显示全部楼层    本楼为最佳答案   
jy369 发表于 2013-10-11 12:45
,好!
烦请讲解一下每一行代码的注释,谢谢!
  1. Private Sub Worksheet_Change(ByVal Target As Range)                 '工作表改变时间,当Worksheet发生改变时激活事件,并返回活动单元格变量Target 变量类型 为 单元格区域
  2.     If Target.Column = 1 And Target.Count = 1 And Target.Row > 1 Then   '如果 Target.Column=1 并且 Target.Count=1 并且 Target.Row>1 则执行
  3.         With Sheets("S")                                                 '在 指定工作表S 执行一系列的语句
  4.             ROW1 = .Range("A" & Rows.Count).End(xlUp).Row                    '返回A列最后一个非空单元格所在行的行号w
  5.             ARR1 = .Range("A2:C" & ROW1)                                     '把单元格区域 A2到C列ROW1 的内容赋值给 数组ARR1,也就是把S工作表的内容赋值到数组ARR1
  6.         End With                                                         'End 对应于 With Sheets("S")
  7.         For I = 1 To UBound(ARR1)                                        '开始循环,设定变量范围为I=1到UBound(ARR1)  其中 UBound 返回 ARR1数组的最大下标
  8.             If Target.Value = ARR1(I, 1) Then                             '如果 Target.Value=ARR1(I,1) 则执行,也就是 活动单元格内容 与数组组ARR1的首列(规格)判断
  9.                 Target.Offset(0, 3) = ARR1(I, 2)                           '把 ARR1(I,2) 的值也就是 材料品名,写入活动单元格右偏移3列的单元格,也就是写入D列
  10.                 Target.Offset(0, 4) = ARR1(I, 3)                           '把 ARR1(I,3) 的值也就是 理论重量,写入活动单元格右偏移4列的单元格,也就是写入E列
  11.                 Exit For                                                   '退出 循环
  12.             End If                                                        'End IF
  13.         Next I                                                           '下一个I,重新执行循环
  14.     End If                                                              'End  IF
  15. End Sub                                                             'End 事件
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-10-15 08:03 | 显示全部楼层
感谢指点,
回复

使用道具 举报

 楼主| 发表于 2013-10-15 08:06 | 显示全部楼层
zjdh 发表于 2013-10-11 13:32
去下载一个代码解释器吧!
http://www.excelpx.com/thread-186721-1-1.html

嗯,好的,谢谢!
回复

使用道具 举报

发表于 2013-10-15 08:11 | 显示全部楼层
jy369 发表于 2013-10-15 08:06
嗯,好的,谢谢!

给评个最佳吧
回复

使用道具 举报

发表于 2013-11-17 10:02 | 显示全部楼层
学习学习一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 21:00 , Processed in 0.383264 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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