| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
ADSL如何秒变专线,公网IP盒子了解一下千里之行 始于足下
共有 233 人关注过本帖
标题:重复调用一个方法 里面的变量的值需要自动递增 该如何声明变量及初始化
只看楼主 加入收藏
ljc2020
Rank: 2
等 级:论坛游民
威 望:1
帖 子:124
专家分:79
注 册:2019-7-25
结帖率:83.33%
  已结贴   问题点数:20  回复次数:9   
重复调用一个方法 里面的变量的值需要自动递增 该如何声明变量及初始化
程序代码:
Sub test1()
Application.OnTime Now + TimeValue("00:00:05"), "test2"
End Sub
Sub test2()
Dim a, b As Long
a = 28
b = 5
c = 2
If Sheet1.Cells(a, b + 1) <> Sheet1.Cells(a, b) Then
Sheet1.Cells(a, b + 1) = Sheet1.Cells(a, b)
Sheet2.Cells(c, 2) = Sheet1.Cells(a, b + 1)
c = c + 1
End If
End Sub 

里面的变量 c 该如何声明 可以让其中的 c=c+1 起作用 求大神指点 谢谢
搜索更多相关主题的帖子: 重复 变量 声明 Sub End 
2019-07-30 11:41
wufuzhang
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:广州
等 级:版主
威 望:14
帖 子:187
专家分:1180
注 册:2017-8-9
  得分:6 
这个是VBA吧,你试一下Static c As Long 看可不可以。

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-07-30 12:41
ljc2020
Rank: 2
等 级:论坛游民
威 望:1
帖 子:124
专家分:79
注 册:2019-7-25
  得分:0 
回复 2楼 wufuzhang
好的 谢谢指点
2019-07-30 13:13
ljc2020
Rank: 2
等 级:论坛游民
威 望:1
帖 子:124
专家分:79
注 册:2019-7-25
  得分:0 
回复 2楼 wufuzhang
试了  依然不行 不知还有别的方法吗
2019-07-31 10:27
wufuzhang
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:广州
等 级:版主
威 望:14
帖 子:187
专家分:1180
注 册:2017-8-9
  得分:0 
将c声明为全局变量试试。

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2019-07-31 12:06
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:254
帖 子:4419
专家分:27157
注 册:2008-10-15
  得分:7 
按你的代码,C=2,然后C=C+1 ,那定义啥都没用。除下改定义外,你的代码也要改。
如,按 2楼改了定义,那么 c=2 这行就要修改了。
if c=0 then c=2     '按你原来的程序,C最小值为2,那么当C值为0时,说明没有赋过值,所以给基础值 2

-------------------------
如果每次自增,并且变量值保存到下一次执行时还是上次的结果,那只有写到文件里,注册表里等地方。
写文件是最简单的。
每次这个值修改了就写进去。每次需要使用这个值,就是临时从文件中读取。
为防止冲突,可以读取后立即写入。
大概的流程可以按这个来
定义函数
判断文件是否存在。
存在,读第一行,转数值。
+1
不存在
=1
判断结束
新建文件模式,写入新值
返回新值

这样每次需要这个值时,直接调用这个函数,就得到一个当前值,并且只要不是并发操作,就不会导致出现二个相同的数值。
如果你存在并发操作,那这么简单的方法就不适用,而应该一个专用服务程序来处理了。

授人于鱼,不如授人于渔
早已停用QQ了
2019-07-31 13:01
ljc2020
Rank: 2
等 级:论坛游民
威 望:1
帖 子:124
专家分:79
注 册:2019-7-25
  得分:0 
回复 6楼 风吹过b
多谢大神提供的新思路 我试试
2019-07-31 13:25
ljc2020
Rank: 2
等 级:论坛游民
威 望:1
帖 子:124
专家分:79
注 册:2019-7-25
  得分:0 
回复 5楼 wufuzhang
多谢大神指点
2019-07-31 13:26
jklqwe111
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:19
帖 子:246
专家分:855
注 册:2014-4-13
  得分:7 
试着改一下
Sub test2()
Dim a, b ,c As Long'''''''''''''同时声明c
a = 28
b = 5

If Sheet1.Cells(a, b + 1) <> Sheet1.Cells(a, b) Then
Sheet1.Cells(a, b + 1) = Sheet1.Cells(a, b)
c=[CountA(sheet2! b:b )+1]'''''''''''''''取得sheet2表B列最后空格的行号,条件是B列从第一行起数据要连续
Sheet2.Cells(c, 2) = Sheet1.Cells(a, b + 1)

End If
End Sub

[此贴子已经被作者于2019-7-31 15:06编辑过]

2019-07-31 15:04
ljc2020
Rank: 2
等 级:论坛游民
威 望:1
帖 子:124
专家分:79
注 册:2019-7-25
  得分:0 
回复 9楼 jklqwe111
多谢 这种方法很不错
2019-07-31 15:49







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019702 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved