100分求助_EXCEL中VBA响应单元格输入事件
因生产现场统计工作需要,我想用VBA程序实现对某一单元格中数据改变的响应事件(我不知道我用词准不准)。我是想用一个EXCEL的多个页表,实现对另一个页表(实际上是另一个E...
因生产现场统计工作需要,我想用VBA程序实现对某一单元格中数据改变的响应事件(我不知道我用词准不准)。
我是想用一个EXCEL的多个页表,实现对另一个页表(实际上是另一个EXCEL的一个页表)。
如图:想用第一个页表,实现对第二个页表的输入和修改。
第一个页表只对应第二个页表中的某几列(图是简单化了的)。
说明:
1、第二个页表是最终要得到的表,前两项“批次”、“型号”是提前输入第二个页表中的。其中“批次”一项是唯一的,没有重复,“型号”一项,会有些重复。
2、第二个页表,是某一“批次”的产品在生产过程的所有工序(约50多道工序)所有良品和不良品的数据的简化版。分布在几个车间中,要各自统计纸档,并输入电子档。
3、第二个表的每一行,对应某个唯一标识的“批次”的所有数据。
4、第一个表,只是对应第二个表中某几列的数据,用来实现读取和输入(修改)。这个表就是现场用纸档记录的数据,交上来后,输入电子档的。
我想,把第一个表(实际上有多个)设计的与纸档表完全一样,并通过在第一个表的手工输入来实现对第二个表的同步输入。因为现场的纸档表太多。最终是要合并到一个表格中,行数、列数都很多,不方便输入、确认及查找错误。
我想实现以下功能:
当在第一个表中的“批次”的单元格输入对应的批次代码(如:第一行的,CKW10B26L)后
1、型号后面的单元格显示对应的型号,如对于CKW10B26L批次的“型号”是054040A(这个是用来在输入数据时,初步确认一下,显示的型号与纸档的是否一致,尽管有重复,但一般没问题),同时,读取对应的其它项的数值,如果没有数据,就显示0.
2、查找到对应的“批次”(对应的某一行后),通过显示的“型号”确认与纸档一致后,在第一表中,输入相应项的数值,并自动写入第二表中对应的项中。
不知道,说明白了没有。如果有高手明白,希望能帮我写一下程序。
或者指点一下核心内容:
1、在VBA程序中,如何“知道”某个单元格的值被修改了?,即响应单元格被“选中”后,光标又移开(输入结束)了。 展开
我是想用一个EXCEL的多个页表,实现对另一个页表(实际上是另一个EXCEL的一个页表)。
如图:想用第一个页表,实现对第二个页表的输入和修改。
第一个页表只对应第二个页表中的某几列(图是简单化了的)。
说明:
1、第二个页表是最终要得到的表,前两项“批次”、“型号”是提前输入第二个页表中的。其中“批次”一项是唯一的,没有重复,“型号”一项,会有些重复。
2、第二个页表,是某一“批次”的产品在生产过程的所有工序(约50多道工序)所有良品和不良品的数据的简化版。分布在几个车间中,要各自统计纸档,并输入电子档。
3、第二个表的每一行,对应某个唯一标识的“批次”的所有数据。
4、第一个表,只是对应第二个表中某几列的数据,用来实现读取和输入(修改)。这个表就是现场用纸档记录的数据,交上来后,输入电子档的。
我想,把第一个表(实际上有多个)设计的与纸档表完全一样,并通过在第一个表的手工输入来实现对第二个表的同步输入。因为现场的纸档表太多。最终是要合并到一个表格中,行数、列数都很多,不方便输入、确认及查找错误。
我想实现以下功能:
当在第一个表中的“批次”的单元格输入对应的批次代码(如:第一行的,CKW10B26L)后
1、型号后面的单元格显示对应的型号,如对于CKW10B26L批次的“型号”是054040A(这个是用来在输入数据时,初步确认一下,显示的型号与纸档的是否一致,尽管有重复,但一般没问题),同时,读取对应的其它项的数值,如果没有数据,就显示0.
2、查找到对应的“批次”(对应的某一行后),通过显示的“型号”确认与纸档一致后,在第一表中,输入相应项的数值,并自动写入第二表中对应的项中。
不知道,说明白了没有。如果有高手明白,希望能帮我写一下程序。
或者指点一下核心内容:
1、在VBA程序中,如何“知道”某个单元格的值被修改了?,即响应单元格被“选中”后,光标又移开(输入结束)了。 展开
展开全部
你这不需要编写VBA,公式完全可以解决问题,单元格、工作表如图,公式如下:
1、型号的公式“=VLOOKUP(B1,Sheet2!A2:H6,2)”
2、工序1数量1的公式“=VLOOKUP(B1,Sheet2!A2:H6,3)”
3、工序2数量1的公式“=VLOOKUP(B1,Sheet2!A2:H6,4)”
4、工序3数量1的公式“=VLOOKUP(B1,Sheet2!A2:H6,5)”
5、工序1不良项1的公式“=VLOOKUP(B1,Sheet2!A2:H6,6)”
6、工序2不良项1的公式“=VLOOKUP(B1,Sheet2!A2:H6,7)”
7、工序3不良项1的公式“=VLOOKUP(B1,Sheet2!A2:H6,8)”
修改“批次”就可以啦。若不明白可以向我索要Excel电子版文件。
展开全部
没有具体表格,不好编写实际的VBA,下面是我的VBA基本流程
'使用Change事件
'使用Target.Address获取目标地址
'表一中批次在a2 ,
Private Sub Worksheet_Change(ByVal Target As Range)
判断Target.Address (更改数据的单元格)是否在规定的数据区域内
否--》退出sub
是--》判断 Target.Address 是否等于 range("a2").Address(批次的地址a2)
是--》 执行查找并显示
否--》 判断 Target 是否为 可更改的数据,
是--》 在表二中找到当前批次所在的行,并更改数据
否--》 退出sub
End Sub
'使用Change事件
'使用Target.Address获取目标地址
'表一中批次在a2 ,
Private Sub Worksheet_Change(ByVal Target As Range)
判断Target.Address (更改数据的单元格)是否在规定的数据区域内
否--》退出sub
是--》判断 Target.Address 是否等于 range("a2").Address(批次的地址a2)
是--》 执行查找并显示
否--》 判断 Target 是否为 可更改的数据,
是--》 在表二中找到当前批次所在的行,并更改数据
否--》 退出sub
End Sub
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
感觉有些乱,无法了解你的意图。
单元格修改事件是Change。即
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
Target.Address表示目标地址。
单元格值可以用以下几种方法取得。
ActiveCell
Range(Target.Address)
Cells(Target.Row, Target.Column)
单元格修改事件是Change。即
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
Target.Address表示目标地址。
单元格值可以用以下几种方法取得。
ActiveCell
Range(Target.Address)
Cells(Target.Row, Target.Column)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
alt+F11打开VBA
左边点ThisWorkBook,右边选择WorkBook,事件选择SheetChange
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Worksheets("Sheet1").Activate
msbox Str(ActiveCell.Address)
End Sub
左边点ThisWorkBook,右边选择WorkBook,事件选择SheetChange
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Worksheets("Sheet1").Activate
msbox Str(ActiveCell.Address)
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上已经讲得很详细了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询