2008年11月19日星期三

懒人计划 3 – 自动制作文件的二次进化 PART 05 – 第一次执行 3

| |
~ 上傳‧分享‧網賺 ~
~ 免費上傳空間‧請即申請 Freak Share ~
~ 進入後請點選左上角 注冊 ! ~

~ 声明事项 ~

如各位想把以下本文章转贴 , 请记得要注明出处.

本文章之内容为本人之经验所写, 绝无抄袭成份, 特此声明.

由于图片制作需时, 所以更新会比较慢.

存放图片的 SHARE A PIC SERVER 可能读取速度较慢, 请耐心等待.

Picture



真的没骗排版哦 ~ 哈哈 ~ ( 多骗一句不碍事吧 ~ 哈哈哈 ~ 闪 ~~~~~ )

现在开始再说一下 , 余下的记录要处理的地方吧 ~ 其实只不过又是那一些什么地方又加些什么 “ Y ” 字作记号 , 什么什么又加这个减那个的 , 所以这一编就不如直接把整个第一次执行程序时的模块贴出来吧 ~

==========================================

Sub FirstTimeUse()

'设定第一个记录位置为 4
FirstRec = 4

'选择 SUMMARY 页面的储存格 B3 , 利用 ActiveCell.End(xlDown).Select 向下寻找最后一个记录
'利用变量 LASTREC 记录目标位置
Worksheets("Summary").Select
Worksheets("Summary").Range("B3").Select
ActiveCell.End(xlDown).Select
LastRec = ActiveCell.Row

'选择 INVOICE 页面 , 清空储存格 G6 到 G15 的值 , 把储存格 A2 的值更改为 1
Worksheets("Invoice").Select
Worksheets("Invoice").Range("A2").Select
Worksheets("Invoice").Range("G6:G15").Value = ""
Worksheets("Invoice").Range("A2").Value = 1

'打印 1 次
ActiveSheet.PrintOut from:=1, To:=1, copies:=1

'利用变量 CHECKAREA 设定重复工作次数由 6 到 15
'储存格位置利用 CHECKAREA 变量的值自动变更
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

'选择 INVOICE 页面的储存格 G16 , 利用 ActiveCell.End(xlUp).Select 向上寻找最后一个记录
Worksheets("Invoice").Range("G16").Select
ActiveCell.End(xlUp).Select
LastShowing = ActiveCell.Row

'利用变量 REF2TTL 计算 每一个 REF # 中所包含的 REF 2# 的数量
Ref2TTL = LastShowing - 5

'选择 SUMMARY 页面
Worksheets("Summary").Select

'设定变量 COUNTER 的值为 4
Counter = 4

'利用变量 LOOPCOUNT 设定重复工作次数由 1 到 变量 REF2TTL 的值
For LoopCount = 1 To Ref2TTL

'变更 SUMMARY 页面 I 及 J 适当储存格的值
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
Counter = Counter + 1

Next LoopCount

'重复工作设定
Do

'选择 SUMMARY 页面 A 行的对应位置
Worksheets("Summary").Range("A" & Counter).Select

'利用变量 TEMPREC 记录现时所选择的储存格所记录的值
TempRec = ActiveCell.Value

'选择 INVOICE 页面 , 清空储存格 G6 到 G15 的值 ,
'变更 INVOICE 页面储存格 A2 的值为变量 TEMPREC 的值
Worksheets("Invoice").Select
Worksheets("Invoice").Range("G6:G15").Value = ""
Worksheets("Invoice").Range("A2").Value = TempRec

'打印 1 次
ActiveSheet.PrintOut from:=1, To:=1, copies:=1

'利用变量 CHECKAREA 设定重复工作次数由 6 到 15
'储存格位置利用 CHECKAREA 变量的值自动变更
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

'选择 INVOICE 页面的储存格 G16 , 利用 ActiveCell.End(xlUp).Select 向上寻找最后一个记录
Worksheets("Invoice").Range("G16").Select
ActiveCell.End(xlUp).Select
LastShowing = ActiveCell.Row

'利用变量 REF2TTL 计算 每一个 REF # 中所包含的 REF 2# 的数量
Ref2TTL = LastShowing - 5

'选择 SUMMARY 页面
Worksheets("Summary").Select

'利用变量 LOOPCOUNT 设定重复工作次数由 1 到 变量 REF2TTL 的值
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
Counter = Counter + 1

Next LoopCount

'选择 SUMMARY 页面储存格 I3 , 利用 ActiveCell.End(xlDown).Select 向下寻找最后一个记录
'变更变量 FIRSTREC 的值为 I 行最后一个记录的位置
Worksheets("Summary").Range("I3").Select
ActiveCell.End(xlDown).Select
FirstRec = ActiveCell.Row

'如果变量 FIRSTREC 的值与变量 LASTREC 的值相等便停止运作 , 否则重复 DO 到 LOOP UNTIL 中间的所有步骤
Loop Until FirstRec = LastRec

End Sub

==========================================

哗 ~ 会不会长了点 …

好吧 ~ 不管了 ~ 继续写 , 因为下一编要开始讲解一下 , 程序在第二次执行时的模块编写问题 ~ 嗯 … 继续 ~

如果你有细心地留意 , 其实在后半段的程序代码大部份都只是上半段的复制品 , 只不过是方在一个 DO ~ LOOP UNTIL ~ 的中间罢了 , 里面的东西就不作详细解释了 , 留给你慢慢地细心地去想一下程序的运作原理 .

现在先讲解一下关于 DO ~ LOOP UNTIL ~ 这个东西 , DO ~ LOOP UNTIL ~ 顾名思义就是 “ 做 … ( 某一段程序代码 ) … 直到 … ( 条件成立 ) … ” , 这东西很有用的 , 记得多点练习这个 ~

另外值得特别注意的是 LOOP UNTIL 的条件设定 , FirstRec = LastRec 中的 LastRec 就是在程序最初时 , 在 SUMMARY 页面的行 B 找出来的最后一个数据 , 那 FirstRec 的值是什么呢 ? FirstRec 这个变量的值 , 在程序开始时已经设定为 4 了~

==========================================

'设定第一个记录位置为 4
FirstRec = 4

==========================================

然后 , 在程序执行到结尾的时候 ( 即 LOOP UNTIL 语句之前 ) , 我要求计算机去做一件事来把变量 FirstRec 的值更新一下 ( 嗯 … 好像没跟你讲过变量FirstRec 是代表着什么吧 ~ 就是要处理的第一个记录的位置了 ~ 之前设定为 4 是因为第一个记录是 SUMMARY 页面的第 4 列 ~ )

==========================================

'选择 SUMMARY 页面储存格 I3 , 利用 ActiveCell.End(xlDown).Select 向下寻找最后一个记录
'变更变量 FIRSTREC 的值为 I 行最后一个记录的位置
Worksheets("Summary").Range("I3").Select
ActiveCell.End(xlDown).Select
FirstRec = ActiveCell.Row

==========================================

执行完这几句程序代码之后 , 变量 FirstRec 的值就顺利变更了 ~ 当变量FirstRec 的值与变量 LastRec 的值相同 , 就可以完成工作 , 嗯 , 这句不用解释了吧 ~

好 ~ 这一回就先到这里 , 下一回就开始编写 “ 程序在第二次执行时的程序代码 ”

记得跟我打个招呼哦 ~ 否则我只是在自言自语的话 , 我可能会把心一横 , 就把这个站关了 ~ 哈哈 ~

0 留言:

最新回應

Loading...

有事啟奏‧無事閒聊 ~ 哈 ~


米高積遜全復刻 哈利波特 Michael Jackson 妙麗 金曲獎 MJ 迈克尔杰克逊其实没有死!美国CBC电台已证实 哈利波特 hongkong168 蓮花河畔景苑 盧廣仲 鄧麗欣 不想放手New! 陳珊妮 方大同 巨乳排球 痞子英雄 23 東風 蕭閎仁 米高積遜全復刻 上海 倒塌 南王姐妹花 周杰倫 變形金剛2下載 michael jackson 去世 天文台 米高積遜 花拉科茜 天圖佈局 浪卡 耳廓狐 神探俏嬌娃 韶关旭日玩具厂 譚曉風 严妍 僧老少閒 地下天文台 金泰浩 百老匯 巨乳排球 陳振聰 柯柏文 aika 麥可傑克森