ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 带你入门VBA,第五讲:如何控制单元格

[复制链接]

TA的精华主题

TA的得分主题

发表于 2004-11-2 22:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
恩,就是这样!

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-11-2 22:52 | 显示全部楼层
以下是引用啊一在2004-11-2 22:20:00的发言:

不是啊老师,如果值和原来不一样才运行程序,是的,仅值变化就行了.

辛苦了老师,我在等您!

试试

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

aaa = Application.Sum(Columns(5)) If aaa <> [a1] Then aaa = MsgBox("数值已改动", 1 + 64, "提示") If aaa = 1 Then [a1] = Application.Sum(Columns(5)) End If End If End Sub

TA的精华主题

TA的得分主题

发表于 2004-11-2 22:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原来我把代码写进worksheet-selectionchange里可是不行,只要选择的单元格改变就运行严重影响速度.

TA的精华主题

TA的得分主题

发表于 2004-11-2 22:56 | 显示全部楼层

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

aaa = Application.Sum(Columns(5)) If aaa <> [a1] Then aaa = MsgBox("数值已改动", 1 + 64, "提示") If aaa = 1 Then [a1] = Application.Sum(Columns(5)) End If End If End Sub

shangyu老师,能不能解释一下每行的意思,比如aaa <> [a1]这里的[a1]是啥意思呢?是指a1单元格还是有其他意思?

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-11-2 22:56 | 显示全部楼层
上面我写的程序效果是这样的:如果第五列数值改变,则提示你已发生变动,如果你按下"确定"按纽将不再提示,如果按下"取消"按纽,则选取单元格时继续给你提示

TA的精华主题

TA的得分主题

 楼主| 发表于 2004-11-2 22:58 | 显示全部楼层
以下是引用啊一在2004-11-2 22:56:00的发言:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

aaa = Application.Sum(Columns(5)) If aaa <> [a1] Then aaa = MsgBox("数值已改动", 1 + 64, "提示") If aaa = 1 Then [a1] = Application.Sum(Columns(5)) End If End If End Sub

shangyu老师,能不能解释一下每行的意思,比如aaa <> [a1]这里的[a1]是啥意思呢?是指a1单元格还是有其他意思?

是把第五列的合计数先放在A1单元格中,然后当单元格发生变动时,再把后来的值和A1的值进行比较.

TA的精华主题

TA的得分主题

发表于 2004-11-2 23:16 | 显示全部楼层

在sheet模块中(右击工作表标签——查看代码):

Dim OldValue As String

Private Sub Worksheet_Change(ByVal Target As Range) '当激活单元格后,将现在值与OldValue比较确定是否改变值 If Target = OldValue Then MsgBox "Target.Value = OldValue" Else MsgBox "Target.Value <> OldValue" End If End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range) '当鼠标选定单元格时单元格的值赋OldValue OldValue = Target End Sub

TA的精华主题

TA的得分主题

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

我真该打,没看谁发的就回了,是因为我觉得兰老师忙,暂时没有回就发消息给了shangyu老师呵呵,对不起兰老师!

我是不是好烦啊老师,真的不好意思.我刚学,懂得不多,请原谅.

我把您的代码改变一下试试再说吧!

感谢您,兰老师!

TA的精华主题

TA的得分主题

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

太好了,兰老师给出了列的比较方法,而shangyu老师又给出了单元格的比较方法,我这就把两位老师的方法结合运用,看能不能实现我的目的.

感谢两位老师!

TA的精华主题

TA的得分主题

发表于 2004-11-13 22:33 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-20 07:19 , Processed in 0.030087 second(s), 5 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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