~ 上傳‧分享‧網賺 ~
~ 免費上傳空間‧請即申請 Freak Share ~
~ 進入後請點選左上角 注冊 ! ~
~ 声明事项 ~
如各位想把以下本文章转贴 , 请记得要注明出处.
本文章之内容为本人之经验所写, 绝无抄袭成份, 特此声明.
由于图片制作需时, 所以更新会比较慢.
存放图片的 SHARE A PIC SERVER 可能读取速度较慢, 请耐心等待.
第二次执行程序时 , 情况比第一次执行简单很多 , 因为不用像第一次执行时一样考虑这个衡量那个 , 所以程序代码的编写比较简单 , 而且可以利以复制贴上来写 , 嗯 , 只要轻轻修改一下就可以了 ~
首先 , 情况还是一样 , 先要找到所有记录的最后一行 , 所以程序代码必须有以下的几句 :
==========================================
Worksheets("Summary").Select
Worksheets("Summary").Range("B3").Select
ActiveCell.End(xlDown).Select
LastRec = ActiveCell.Row
==========================================
用意一样 , 方式一样 , 纯粹的 COPY 和 PASTE ~ 哈哈 ~ ( 懒人素质发挥得淋漓尽致嘛 ~ 哈哈 ~ ) , 嗯 , 然后再增加一个变量 COUNTER , 把 COUNTER 的值设定为 0 , 为什么是 0 嘛 ~ 等一下再说 ~
==========================================
Counter = 0
==========================================
今次比之前做第一次执行的程序不同的地方是 , 今次并不需要先告诉计算机怎样的执行一次 , 直接要它重复操作方式就可以了 ~
首先 , 我们要确定那些数据是已经有的 , 所以 , 要加入以下的程序代码 :
==========================================
Do
Worksheets("Summary").Range("I3").Select
ActiveCell.End(xlDown).Select
LastRec2 = ActiveCell.Row
==========================================
当计算机在 SUMMARY 页面的储存格 I3 向下找 , 找到最后一个记录的位置后 , 就把数值储放于变量 LastRec2 内 , 注意 , 这个是 2 , LastRec2 , 不是 LastRec !!
之后就跟之前做的一样 , 要计算机去把合适的位置中的数据找出来 , 最后一个已处理的记录再加 1 就是我们要的位置 , 所以加入以下的程序代码 , 就可以找到对应位置中记录了的 REF # 的号码 :
==========================================
Worksheets("Summary").Range("A" & LastRec2 + 1).Select
==========================================
不用解释了吧 ~ LastRec2 + 1 的位置就是要处理的记录的位置 ~ 很简单嘛 ~ 之后又再一次用之前的方法 , 利用变量 TempRec 来记录找出来的值 ~
==========================================
TempRec = ActiveCell.Value
==========================================
再之后又是跟之前的一样 , 这里加些什么 , 那里又加些什么的 , 全部复制过来就好 ~
==========================================
Worksheets("Invoice").Select
Worksheets("Invoice").Range("A2").Value = ""
Worksheets("Invoice").Range("G6:G15").Value = ""
Worksheets("Invoice").Range("A2").Value = TempRec
ActiveSheet.PrintOut from:=1, To:=1, copies:=1
For CheckArea = 6 To 15
If Worksheets("Invoice").Range("C" & CheckArea).Value <> "" And Worksheets("Invoice").Range("D" & CheckArea).Value <> "" And Worksheets("Invoice").Range("E" & CheckArea).Value <> "" And Worksheets("Invoice").Range("F" & CheckArea).Value <> "" Then Worksheets("Invoice").Range("G" & CheckArea).Value = "Y"
Next CheckArea
Worksheets("Invoice").Range("G16").Select
ActiveCell.End(xlUp).Select
LastShowing = ActiveCell.Row
Ref2TTL = LastShowing - 5
Worksheets("Summary").Select
Counter = LastRec2 + 1
For LoopCount = 1 To Ref2TTL
Worksheets("Summary").Range("I" & Counter).Value = "Y"
Worksheets("Summary").Range("J" & Counter).Formula = "=today()"
Worksheets("Summary").Range("J" & Counter).Value = Worksheets("Summary").Range("J" & Counter).Value
Counter = Counter + 1
Next LoopCount
Loop Until Counter = LastRec + 1
==========================================
这里跟之前所不同的地方是 , 今次 DO ~ LOOP UNTIL ~ 所完成并停止程序的条件跟之前的不同 , 是要变量 COUNTER 的值跟变量 LASTREC 的值加 1 相等才可以停止 ~ 如果你还未知道为什么条件会这样设定 , 不要紧的 , 慢慢地想清楚 , 之前在寻找最后一个记录的位置时 , 我们利用了变量 LASTREC 来记录这个位置 , 然后 , 当程序开始运作后 , 程序在每一次完成增加数据到 SUMMARY 页面的 “ 已打印 ” 和 “ 打印日期 ” 后 , 都会把 COUNTER 的值更改成 COUNTER 的值加 1 .
如果程序开始时 , 变量 LASTREC 的值是 10 , 当程序完成这个记录的处理 , 并在 “ 已打印 ” 和 “ 打印日期 ” 的位置加上数据后 , 变量 COUNTER 的值就会变成 COUNTER 的值加 1 , 如果当时变量 COUNTER 的值是 10 , 那么完成这个处理后 , 变量 COUNTER 的值就会是 11 不是 10 , 如果按照我们之前做的第一次执行程序的停止条件来设定 , 那么 , 不管是 10 年后或者是 100 年后甚至更远 , 变量 COUNTER 所记录的值都只会是越来越大 , 变量 LASTREC 的又只会停留在 10 , 两个数值根本没可能相同 , 结果就是 , 程序只会不停地执行而不会停止 .
好了 , 现在来说明一下 , 为什么之前在设定变量 COUNTER 时 , COUNTER 的值要设定为 0 , 如果你有细心地想一想 , 你应该会明白到 , 这个变量 COUNTER 的值不可能跟之前 “ 第一次执行 ” 时的设定一样 , 因为我们根本不知道变量 COUNTER 应该是什么 , 所以设定为 0 就可以了 ~
如果你有程序编写的经验 , 可能你又已经发现 , Counter = 0 这句程序代码基本上是没什么意思的 , 因为 Counter = LastRec2 + 1 这句程序代码才是重点 , 不过 , 在于我的个人立场和习惯 , Counter = 0 这句程序代码可以让我在看程序代码的时候 , 会更加清楚所有变量的变化 , 对程序的执行速度又没有影响 , 所以就加了这样的一句了 .
嗯 … 又太长了 … 下一编继续 ~
0 留言:
發佈留言