请教excel 的问题,,请高人指点一下。。。
登录 | 论坛导航 -> 华新鲜事 -> 社会百科 | 本帖共有 6 楼,分 1 页, 当前显示第 1 页 : 本帖树形列表 : 刷新 : 返回上一页
<<始页  [1]  末页>>
作者: (等级:2 - 初出茅庐,发帖:395) 发表:2009-07-24 10:28:35  楼主  关注此帖
请教excel 的问题,,请高人指点一下。。。
大伙儿,,我有一个问题请教,,希望高人帮忙解答一下啊。。

一个excel application。 我可以把external data link 到excel 中。 比如说一个不断变化的数字(从1到10,不断变化但是是有序的变化,例如T1=4,T2=5,T3=6,T4=5......每次变化的新的值不是比原来的旧值大1要么就是小1)一直fill到excel 的A1中。 我怎么才能detect 到A1这个cell中每次值的变化呢? 而且还能detect 到新的值是比旧的值大1还是小1呢?

谢谢先。。。
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:nus_card (等级:2 - 初出茅庐,发帖:148) 发表:2009-07-25 11:33:09  2楼
建议
1,用VBA loop一直监视A1,这样可能会吃很多CPU吧,若你只是想用电脑做此事就没关系。

2,用VB写个程序,用到timer,可以设置100ms检查A1的数据一次
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:gsos (等级:2 - 初出茅庐,发帖:12) 发表:2009-07-25 19:29:27  3楼
监视excel的worksheet change event.
用vba处理sheet change event,
如果Target 参数是你想要的那个cell,那么就看看它的value.
然后该干啥干啥。。。
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者: (等级:2 - 初出茅庐,发帖:395) 发表:2009-07-28 17:40:40  4楼
谢谢二位,有一个新的问题在请教。。 如何解这个死循环??
原来的问题我写了这样一个程序去模拟:(在A1中输入任意integer, 然后pop up message 告诉变化多少)

Private Sub Worksheet_Change(ByVal Target As Range)
Static i As Integer
i = Range("A1").Value
If Target.Address = "$A$1" Then

If i > Range("B1").Value Then _
MsgBox "value increased by " & i - Range("B1").Value Else _
MsgBox "value decreased by " & Range("B1").Value - i
End If
Application.EnableEvents = False
Range("B1").Value = Range("A1").Value

Application.EnableEvents = True
End Sub


但是这个程序只能在人工手动在A1中输入数据时管用(似乎一定要press enter, 或者tab才行),我的application 是从外面连一个external data 到excel 中, worksheet_change 不能detect 到数据的变化。

所以我又想了一招,,考虑能不能先在VBA中写一个赋值语句,让B1=A1,, 然后detect B1 是否有变化,,但是这么做得到了一个死循环,, 各位有什么办法解这个循环呢?

死循环程序如下(输入任意interger 在A1, 令 B1 随着 A1的变化而改变,,然后Popup message 告诉B1有变化):

Private Sub Worksheet_Change(ByVal Target As Range)

Range("B1").Value = Range("A1").Value
If Target.Address = "$B$1" Then
MsgBox "B1 changed"
End If

End Sub

请教如何解决啊?




欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:nus_card (等级:2 - 初出茅庐,发帖:148) 发表:2009-07-29 22:06:22  5楼
谢谢二位,有一个新的问题在请教。。 如何解这个死循环??原来的问题我写了这样一个程序去模拟:(在A1中输入任意integer, 然后pop up message 告诉变化多少) Private Sub Worksheet_Change(ByVal Target As Range) Static i As Integer i = Range("A1").Value If Target.Address = "$A$1" Then If i > Range("B1").Value Then _ MsgBox "value increased by " & i - Range("B1").Value Else _ MsgBox "value decreased by " & Range("B1").Value - i End If Application.EnableEvents = False Range("B1").Value = Range("A1").Value Application.EnableEvents = True End Sub 但是这个程序只能在人工手动在A1中输入数据时管用(似乎一定要press enter, 或者tab才行),我的application 是从外面连一个external data 到excel 中, worksheet_change 不能detect 到数据的变化。 所以我又想了一招,,考虑能不能先在VBA中写一个赋值语句,让B1=A1,, 然后detect B1 是否有变化,,但是这么做得到了一个死循环,, 各位有什么办法解这个循环呢? 死循环程序如下(输入任意interger 在A1, 令 B1 随着 A1的变化而改变,,然后Popup message 告诉B1有变化)
用两个Excel文件可以解决
假设你的数据在A.xls。你可以在B.xls里面写一个infinite loop。具体工作就是从A.xls读数据,比较

这样的话B.xls一直在运行,就像死机一样,但是A.xls没问题。

欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
作者:nus_card (等级:2 - 初出茅庐,发帖:148) 发表:2009-07-29 22:25:57  6楼
用两个Excel文件可以解决假设你的数据在A.xls。你可以在B.xls里面写一个infinite loop。具体工作就是从A.xls读数据,比较 这样的话B.xls一直在运行,就像死机一样,但是A.xls没问题。
试了下,若你的数据存入A.txt文件里才可以
code类似于

Open strFileName For Input As #5
Line Input #5, strLine
MsgBox (strLine)
Close #5

我用line input 读取.xls文件,不成功。。。
欢迎来到华新中文网,踊跃发帖是支持我们的最好方法!原文 / 传统版 / WAP版只看此人从这里展开收起列表
论坛导航 -> 华新鲜事 -> 社会百科 | 返回上一页 | 本主题共有 6 篇文章,分 1 页, 当前显示第 1 页 | 回到顶部
<<始页  [1]  末页>>

请登录后回复:帐号   密码