Excel精英培训网

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

[习题] 2015年VBA初级1班 B组第3讲作业上交贴 已开贴

[复制链接]
发表于 2015-6-17 09:07 | 显示全部楼层 |阅读模式
本帖最后由 qh8600 于 2015-6-25 08:50 编辑

2015年VBA初级1班 B组作业上交贴
第3讲课程视频  http://www.excelpx.com/thread-366193-1-1.html
第3讲课件 http://www.excelpx.com/thread-366157-1-1.html
第3讲作业 http://www.excelpx.com/thread-366169-1-1.html

要求:
1、提交作业请注明论坛ID及学号。如:B19-白开水的微笑;
2、作业请以代码方式提交,标清题号并所有题贴到一个代码标签中,无需提交附件。不会使用标签可移步妙妙班长帖子:http://www.excelpx.com/thread-322284-1-1.html
3、代码题要求强制声明变量,代码缩进及代码注释(缺少任何一项按错误处理没有分);
4、跟帖不要重复占楼,有问题直接在原帖编辑;
5、非本组学员请勿跟帖,否者往死里扣分;
6、作业截止时间:2015年6月23日18:00时
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-6-17 11:29 | 显示全部楼层
B17-ZL在水一方
  1. Option Explicit
  2. Dim K As String '定义模块级变量
  3. Private Sub Worksheet_Change(ByVal Target As Range) '改变事件,判断选定单元格的输入内容是否与之前一致
  4.     With Target
  5.         If .Cells.Count = 1 Then    '单个单元格变化执行下面语句,多个单元格变化不执行
  6.             If .Value <> K Then MsgBox .Address(0, 0) & "单元格的内容发生变化!"    '当单元格内容发生变化时弹出窗口提示
  7.         End If
  8.     End With
  9. End Sub
  10. Private Sub Worksheet_SelectionChange(ByVal Target As Range) '选择事件,记录选中单元格的当前值
  11.     With Target
  12.         If .Cells.Count = 1 Then    '对选中的单元格内容进行赋值,即记录当前的值
  13.             K = .Value
  14.         End If
  15.     End With
  16. End Sub
复制代码

评分

参与人数 1 +10 金币 +10 收起 理由
qh8600 + 10 + 10 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2015-6-17 22:14 | 显示全部楼层
本帖最后由 JLxiangwei 于 2015-6-23 20:29 编辑

B11-JLxiangwei
  1. Dim strAddress As String
  2. Dim RngValue As Variant
  3. Private Sub Worksheet_Change(ByVal Target As Range)
  4.     If RngValue <> Range(strAddress).Value Then
  5.         MsgBox strAddress & "单元格中的内容发生变化"
  6.     End If
  7. End Sub

  8. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  9.     If Selection.Count > 1 Then Exit Sub
  10.     strAddress = Selection.Address(0, 0)
  11.     RngValue = Selection.Value
  12. End Sub
复制代码

评分

参与人数 1 +10 金币 +10 收起 理由
qh8600 + 10 + 10 很给力!

查看全部评分

回复

使用道具 举报

发表于 2015-6-17 22:59 | 显示全部楼层
本帖最后由 opqazxc 于 2015-6-17 23:20 编辑

弄错号回复了``
B10-opqazxc
  1. Option Explicit

  2. Dim va As Variant    '单元格变化前的值)定义模块型变量va,声明变量va的类型为变体型
  3. Dim targetcount As Long    '选定区域单元格的个数)定义模块型变量targetcount,声明变量targetcount的类型为长整形

  4. Private Sub Worksheet_SelectionChange(ByVal Target As Range)    '当工作表上的选定区域发生改变时发生此事件。
  5.     targetcount = Target.Count    '给变量赋值,等于选定区域单元格的个数
  6.     If targetcount = 1 Then    '判断选定区域单元格的个数是否为1,是的话给变量va赋值
  7.         va = Target.Value    'va=选定单元格的值,即单元格内容变化前的值
  8.     End If
  9. End Sub

  10. Private Sub Worksheet_Change(ByVal Target As Range)    '当用户更改工作表中的单元格,或外部链接引起单元格的更改时发生此事件。
  11.     If targetcount > 1 Then           '判断选定区域单元格的个数是否大于1,是的话不进行任何操作,否的话继续下面的判断
  12.     ElseIf va <> Target Then    '判断变化后单元格的值与变化前的值是否不一致,是的话弹出下面的提示框,并给变量va重新赋值
  13.         MsgBox Target.Address(False, False) & "单元格中的内容发生变化!"    'Range.Address属性,第一参数设置行(第二参数设置列)是否绝对引用,默认按绝对引用
  14.         va = Target.Value    'va再重新赋值为单元格变化后的值
  15.     End If
  16. End Sub
复制代码
``

点评

最后这个赋值好像不需要了  发表于 2015-6-25 08:39

评分

参与人数 1 +10 金币 +10 收起 理由
qh8600 + 10 + 10 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2015-6-18 16:33 | 显示全部楼层
B:12-xcnclzy 第3讲作业
  1. Option Explicit
  2. Dim a
  3. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  4.      a = Target.Value
  5. End Sub
  6. Private Sub Worksheet_Change(ByVal Target As Range)
  7.      If Target.Cells.Count > 1 Then Exit Sub
  8.      If Target.Cells.Count = 1 Then
  9.          If Target.Value = a Then Exit Sub
  10.          MsgBox Target.Address(0, 0) & "单元格中的内容发生变化!"
  11.      End If
  12. End Sub
复制代码

评分

参与人数 1 +8 金币 +8 收起 理由
qh8600 + 8 + 8 如果选中的是一个区域,然后改变其中的一个.

查看全部评分

回复

使用道具 举报

发表于 2015-6-19 22:22 | 显示全部楼层
B13 - qousan 第三讲作业
  1. Option Explicit '要求变量声明

  2. Dim lastValue As String '定义单元格内容“改变”前的内容


  3. Private Sub Worksheet_Change(ByVal Target As Range) '工作表改变事件
  4.     If Selection.Count = 1 And lastValue <> Target.Value Then '如果选区为单个单元格,且内容发生了改变,则
  5.         MsgBox Target.Address(RowAbsolute:=False, ColumnAbsolute:=False) & "单元格中的内容发生变化!" '输出相关信息提示
  6.     End If
  7. End Sub


  8. Private Sub Worksheet_SelectionChange(ByVal Target As Range) '工作表选区改变事件
  9.     If Target.Count = 1 Then lastValue = Target.Value '如果选区为单个单元格,则用lastValue记录其值
  10. End Sub
复制代码

评分

参与人数 1 +10 金币 +10 收起 理由
qh8600 + 10 + 10 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2015-6-21 22:06 | 显示全部楼层
  1. 没实现效果,不会做……

  2. Private Sub Worksheet_Change(ByVal Target As Range)
  3.     Dim arr As Variant '定义一个数组名
  4.     arr = Split(Target.Address, "$") '给数组赋值
  5.     If Target.Count = 1 Then '如果选中单元格数量等于1
  6.         MsgBox arr(1) & arr(2) & "单元格中的内容发生变化!" '那么输出该单元格内容发生变化提示
  7.     End If
  8. End Sub
复制代码

点评

看看老师讲解的作业,然后多试试  发表于 2015-6-25 08:46

评分

参与人数 1 +6 金币 +6 收起 理由
qh8600 + 6 + 6 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2015-6-22 08:46 | 显示全部楼层
  1. Option Explicit
  2. Private Sub Worksheet_Change(ByVal Target As Range)
  3.     Dim ts As String                                                                 '定义输出文本
  4.     ts = Selection.Address(0, 0) & "单元格的内容发生变化!"                           '计算输出文本
  5.     If Selection.Rows.Count * Selection.Columns.Count = 1 Then MsgBox ts, vbOKOnly   '判断,弹出对话框
  6. End Sub
复制代码
挤出来这个

点评

看老师的作业讲解,再试试效果  发表于 2015-6-25 08:47

评分

参与人数 1 +6 金币 +6 收起 理由
qh8600 + 6 + 6 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2015-6-22 10:06 | 显示全部楼层
  1. 不会做。
复制代码
B21:朵朵mila

点评

根据老师的讲解作业,自己再做一遍  发表于 2015-6-25 08:47

评分

参与人数 1 +2 金币 +2 收起 理由
qh8600 + 2 + 2 神马都是浮云

查看全部评分

回复

使用道具 举报

发表于 2015-6-22 21:59 | 显示全部楼层
学委请指正!
  1. Option Explicit
  2. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  3.     If Target.Count = 1 Then
  4. '当目标单元格为数量为1时执行
  5.         MsgBox Target.Address(0, 0) & "单元格中的内容发生变化!"
  6. '显示内容改变的单元格相对地址
  7.     End If
  8. End Sub
复制代码

点评

效果不是太好  发表于 2015-6-25 08:48

评分

参与人数 1 +8 金币 +8 收起 理由
qh8600 + 8 + 8 赞一个!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 09:36 , Processed in 0.678723 second(s), 20 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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