ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 2006带你入门VBA第二期单元格控制(精讲20例)进行中~~~

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-3-27 13:14 | 显示全部楼层
我的也是一样,全变成红色了,,,这组代码是表达的什么意思啊???

TA的精华主题

TA的得分主题

发表于 2006-3-27 13:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
是不是不要插入模块??

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-3-27 13:19 | 显示全部楼层
建立事件程序的方法是,在VBE编辑器中的指定工程中双击指定的工作表,打开该工作表的代码窗口。然后在对象列表框中选取WORKSHEET对象,然后在后面的过程列表中选取Change事件。如下图所示。

2006带你入门VBA第二期单元格控制(精讲20例)进行中~~~

2006带你入门VBA第二期单元格控制(精讲20例)进行中~~~

TA的精华主题

TA的得分主题

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

可是sheet1(月报表)编辑器中已经有一组这样的代码了;Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Range("E3").Value >= 1 And Range("E3").Value <= 12 Then
If Target.Address = "$E$3" Then
Dim i, j As Integer
For i = 1 To 2
Range(Cells(5, i * 12 + [E3] - 4), Cells(26, i * 12 + [E3] - 4)).Copy Cells(5, i + 4)
Next i
Else
If ActiveCell.Row >= 5 And ActiveCell.Row <= 26 Then
For j = 5 To 26
Select Case Target.Address
Case Is = "$E$" & j
Range("E" & j).Copy Cells(j, [E3] + 8)
Exit For
Case Is = "$F$" & j
Range("F" & j).Copy Cells(j, [E3] + 20)
Exit For
End Select
Next j
End If
End If
End If
End Sub

是不是要在其后重新再加建一组代码吗?

TA的精华主题

TA的得分主题

发表于 2006-3-27 13:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

对,一建立事件就有代码了,是把以前的代码删了,还是在其后粘贴,粘贴后还是红色哦!

TA的精华主题

TA的得分主题

发表于 2006-3-27 13:29 | 显示全部楼层

(ByVal Target As Excel.Range)

If Target.Address = "$E$3" Then
Dim 月份 As Byte
Dim Mrow As Long

兰老师这几句什么意思

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-3-27 13:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

代码说明:

Private Sub Worksheet_Change(ByVal Target As Excel.Range):

Worksheet_Change:事件名称,当工作表内的单元格发生改变时事件。

ByVal Target As Excel.Range:把你正在操作的单元格作为变量传递到程序中。ByVal是传值。在程序中使用Target即代码你正在使用的单元格。比如,:当你修改单元格A1后。在程序中Target就代表A1.

Target.address的结果就是A1

TA的精华主题

TA的得分主题

发表于 2006-3-27 13:32 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-3-27 13:32 | 显示全部楼层
以下是引用[I]ylh888[/I]在2006-3-27 13:26:48的发言:[BR]

可是sheet1(月报表)编辑器中已经有一组这样的代码了;Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Range("E3").Value >= 1 And Range("E3").Value <= 12 Then
If Target.Address = "$E$3" Then
Dim i, j As Integer
For i = 1 To 2
Range(Cells(5, i * 12 + [E3] - 4), Cells(26, i * 12 + [E3] - 4)).Copy Cells(5, i + 4)
Next i
Else
If ActiveCell.Row >= 5 And ActiveCell.Row <= 26 Then
For j = 5 To 26
Select Case Target.Address
Case Is = "$E$" & j
Range("E" & j).Copy Cells(j, [E3] + 8)
Exit For
Case Is = "$F$" & j
Range("F" & j).Copy Cells(j, [E3] + 20)
Exit For
End Select
Next j
End If
End If
End If
End Sub

是不是要在其后重新再加建一组代码吗?

以上代码是会员提供示例文件的代码。可以删除后重新加入代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-3-27 13:35 | 显示全部楼层
以下是引用[I]guzhidong[/I]在2006-3-27 13:29:46的发言:

(ByVal Target As Excel.Range)

If Target.Address = "$E$3" Then
Dim 月份 As Byte
Dim Mrow As Long

兰老师这几句什么意思

1、If Target.Address = "$E$3" then语句是判断当前修改的单元格是否是E3。E3单元格是存放月份的单元格,题目的要求是由修改E3的值而变化不同的显示。如果不加判断。当你修改工作表中任一个单元格时都会引起该程序的运行,这当然不是我们想要的。因为我们只想在改变E3值的时候运行程序。 2、Dim 月份 As Byte :声明月份作为一个变量。因为月份最大是12,所以只须要声明为Byte类型。Byte的最大值为255 3、Dim Mrow As Long:声明 Mrow 为长整数。Mrow 的作用是作为工作表中已使用的行数。
[此贴子已经被作者于2006-3-27 13:39:09编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-28 11:39 , Processed in 0.049861 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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