~ 上傳‧分享‧網賺 ~
~ 免費上傳空間‧請即申請 Freak Share ~
~ 進入後請點選左上角 注冊 ! ~
~ 聲明事項 ~
如各位想把以下本文章轉貼 , 請記得要注明出處.
本文章之內容為本人之經驗所寫, 絕無抄襲成份, 特此聲明.
由於圖片製作需時, 所以更新會比較慢.
存放圖片的 SHARE A PIC SERVER 可能讀取速度較慢, 請耐心等待.
哈哈哈 ~ 之前的習題很簡單吧 ~ 不過好像反應不太好似的 , 可能是編程不是每個人都喜歡吧 ~ 有時候我也覺得滿煩的 ~ 哈哈 ~
好了 ~ 現在先處理好 INVOICE 頁面的設定吧 ~
( Pic8_1 )
看到圖片嗎 ? 圖片中 , 紅色圈中的位置是我們之前加上去的 , 你不會想被人看到你打印出來的東西有這些奇怪的符號吧 ~ 行 G 的位置還好 , 程式會把他刪掉的 , B 的那個真的受不了 … XD
最簡單又最直接的方法 ~ 來 ~ 看我的利害 ~
( Pic8_2 )
利害吧 ~ 直接把文字的顏色改成白色 ~ 哈哈 ~ 利害利害 ~ 我真佩服我自己 ~ 哈哈 ~
記得哦 ~ 跟之前的一樣 , 先設定好 INVOICE 頁面才可以給其他人用哦 ~ 還有就是千萬要提醒你的使用者 , 不可以修改任何的東西 ~ 這個可是絕對的哦 ~
哈 ~~~ 利路亞 ~~~ 哈 ~~~ 利路亞 ~~~ 哈利路亞 ~~~ 哈利路亞 ~~~ 哈利 ~~~~ 路亞 ~~~
好 ~ 這次的更新完成了耶 ~ 哈 ~ 鬆一口氣呢 ~ 還以為這個麻煩的問題要把我打敗了 ~ 哈哈 ~
不過說真的 , 解決程式上的問題 , 比起把解決問題的方法和過程用文件打一次出來簡單多了 ~ =_=”
再補充一下關於這個設計的使用問題 , 這個設計在使用時的限制是 , 必須在每一個 REF# 所包含的資料中輸入 REF 2# , 否則程式會出問題的 , 這個必須要緊記 ! 另外 , 如果你有嘗試過運用 VLOOKUP 這個函數 , 其實之前的這些改變可以是全部都多餘的 , 因為你只需要調整一下 VLOOKUP 的查詢位置就可以做到這個效果 , 方法是 , 把 “ 已打印 ” 和 “ 打印日期 ” 往後移 , 之後在識當的位置加上輸入第二個資料的位置 , 然後在 INVOICE 頁面中 , 修改一下 VLOOKUP 函數式的查找位置就行了 . 不過 , 因為在 SUMMARY 頁面所記錄的是整個倉庫或者是出貨的數據 , 如果記錄的方式那麼奇怪的話 , 當你要查看一共出了什麼貨物的時候 , SUMMARY 頁面的記錄就會讓你看得快瘋 , 嗯 … 就是因為這個問題 , 我才會一次過把程式刪掉再寫 … 嗯 …
這次的教學可能比較複雜 , 因為我都快不知道自己在寫什麼了 ~ 哈哈 ~ 這次就到這裡吧 ~ 給點支持嘛 ~~~~ 哈哈哈哈 ~ 打個招呼就是最好的支持哦 XD
==========================================
謎之音 : 完了 !? 那上一次習題的答案呢 !? 快告訴我 ~
我說啊 ~ 你不貼你的答案出來 , 我是不會告訴你的 ~
謎之音 : 那我怎知道你有沒有寫 , 有沒有答案 , 可能你只是等人來幫你解決問題罷了 ~
我說啊 ~ 我能給出提示 , 這就正好證明了我並不笨吧 ~~~ 雖然有時候都有一點點 …
謎之音 : 那你告訴我哦 ~
你貼你的出來 , 我就告訴你我的解決方法 ~ 哈哈哈哈 ~ 不貼就不要問我拿答案了 ~ 呵呵呵呵呵 ~~~~~~~~~~
==========================================
21 留言:
真的是很好的敎學文章,看完了之後,引發了我學 Excel VBA 的興趣。
其望着下一篇新的文章。
哈哈 ~ 謝謝支持 ~
因為最近工作比較忙 , 所以嘛 ~ 下一編教學可能要遲一點才有空寫了~
如果你在學習上遇上問題的話, 也可以來問哦 ~ 有討論才會有進步嘛 =)
感謝威廉
剛好路過,才發覺這裡正式我想學得,
先打聲招呼,
正在慢慢閱讀中.
HI~ BKCHU ~
謝謝支持 ~ 有疑問可以問哦 ~ 希望我的文章幫到你吧 =)
我是Horien
謝謝威廉先生的文章,讓我對VBA產生興趣並學習自行開發.真的很期待下一篇的文章.
另想請教excel中的 formula."VLOOKUP"在VBA中應如何表達,煩請多多指教!!
HIHI ~ Horien~
恭喜發財 ~ 哈哈 ~
對於你所指的問題 VLOOKUP 在 EXCEL VBA 中要怎樣表達嘛 ... 其實 , 在我個人的開發經驗當中 , VLOOKUP 的運作模式是當某個條件成立 , 就找出相應位置的資料 , EXCEL VBA 程式碼大概是 :
IF 什麼什麼 ( 一個變量 ) = 什麼什麼 ( 指定值 ) THEN WORKSHEETS("SHEET1").RANGE("A1").VALUE = 什麼什麼 ( 某一個值
情況就是這樣了 , 不過 , 你也可以嘗試一下 , 利用 EXCEL VBA 在程式碼上動一點手腳 , 利用程式碼在報表的指定儲存格中增加 VLOOKUP 等等的 FORMULA .
當然 , 這個方法其實我有時候也會用到的 , 當中有不少的東西要記住 .
第一 : 一句公式有可能要先分開再合併
第二 : 小心注意在 VBA 程式碼中 " 這個符號
第三 : 當同一個報表的運算公式太多 , 報表打開時就會變得很慢了 ( 忘了在那編文章中有提過 XD )
有疑問的話可以隨時再問哦 ~ 有交流才會有進步 :)
謝謝威廉先生的建議,
由於現階段我在報表中的公式太多,所以太慢.我會再一試.謝謝
真的很期待你的新教學:)
HORIEN
Hi Horien~
其實也不算是什麼建議嘛~ 只是一點經驗分享而已~ 哈哈~ 因為我自己增經測試過利用不同的 FORMULA 來使報表自動化, 但是得出來的結果是 : 計算速度太慢 .... ( 當時測試是單一頁面內有接近 4 千條不同的公式 XD )
結果我再一次用 VBA 把公式加進報表內, 不過, 有所改變的地方是, 當公式得到結果後, 就把得出的值來取締原來的公式, 而測試結果是 : 程式運作速度提高 , EXCEL 檔容量減少 ( 注意哦~ 其實 EXCEL 檔大於 1.5MB 開始, 很大機會出問題的 , 所以檔案容量降低會是一件不錯的事情 ^^ )
有疑問可以拿來一起研究哦 :) 多交流才會更進步嘛 :)
您好威廉先生,
我想問Userform1.show之後,如果想Userform1.消失,應用甚麼?找不到:(
Horien
Hi Horien ~
不要灰心哦 :) 很簡單的啦 ~ 遇到多點問題才會學習到更多東西嘛 :)
只要你把 SHOW 換成 HIDE 就可以了~ 快點試試看吧 :)
威廉先生您好,
未尋找到解答, 請問是公佈了還是還沒
小的測試是如下
Private Sub CommandButton1_Click()
Worksheets("Summary").Range("B3").Select
ActiveCell.End(xlDown).Select
LastB = ActiveCell.Row
Worksheets("Summary").Range("I3").Select
ActiveCell.End(xlDown).Select
LastI = ActiveCell.Row
If LastB = LastI Then GoTo MsgShow Else GoTo Start
MsgShow:
MsgBox ("沒有資料待處理!麥來亂!")
GoTo Finish
Start:
Worksheets("Summary").Range("I4").Select
If Worksheets("Summary").Range("I4").Value = "" Then FirstUse.FirstTimeUse Else SecondUse.SecondTimeUse
Finish:
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
答案其實是沒有公佈過的~ 哈哈~
看你的程式碼 , 你應該測試過了 :) 我雖然沒有做測試 , 但是你的程式碼是應該可行的 :) 不過 ~~~~ ( 別緊張 XD ) 如果程式是第一次執行的話 , 這一組程式碼就不能正常運作了~ 所以要記得注意哦 ~
哦 ~ 還有 ~ 記得要習慣寫註解 ~ 不然的話可能自己都會忘了那些程式碼在做什麼呢~ :) 記得哦 ~ 註解很重要 :)
威廉先生 您好
在下是上篇留言者
還不太懂第一次執行不能正常運作的意思 @.@a
能否開示一下
謝謝提醒,註解註解
:) 其實很容易理解的, 首先, 你要記得 END(XLDOWN) 的運作原理, 之前有教過的, 細心找一找吧 XD ( 沒辦法 , 要多騙幾個顯示量 XD ), 簡單的解釋一下, END(XLDOWN)是用來找出最後一個有數據的儲存格的東西 , 當整個程式 " EXCEL 檔 " 第一次執行的時候 , 報表內跟本沒有東西 , 而你的程式碼是從儲存格 B3 開始往下找, 什麼都沒有輸入過的話, 找到的位置就會變成儲存格 B65536 , 同樣地 I 的也是一樣 , 當大家都是 65536 , 程式還是會繼續執行的 , 所以要記得哦 ~ 這個方法不要在第一次執行時使用 , 否則肯定會出問題的 :P
( 想一想 , 好像之前有點理解錯誤 , 所以使你誤會了呢~ 哈哈~ 不好意思哦 ~ 閃 ! XD )
威廉先生 您好
你的VBA文章對我好有用.
我之前冇用過VBA.只係係excel入面用VLOOKUP 同 IF .
睇完你的VBA文章後,學到在VBA中可以有好多變化.For next同do loop until對初學來說真的好有用^^
我有個問題想問威廉先生
range("A1").value="today()"同
range("A1").formula="today()"
有什麼分別??
伝
Hi 伝 ,
剛下班回來就看到你的回應了 ~ 先要講一句謝謝 :)
首先 , 如果你的程式碼是 ="today()" , 那麼儲存格 A1 的值就會是 today() , 並不會變成當日日子
而你的第二句程式碼又會變成什麼呢 ?? 答案就是錯誤了 :)
RANGE("A1").FORMULA = "=TODAY()"
你的程式碼小了一個等號 :)
不過有一件事我要說明一下 , 其實理論上來說 , 這個種把函數式加進儲存格的方法 , 理論上來說都是可行的 , 不過我比較偏向於用 .FORMULA 這種做法 , 因為一方面是比較合理 , 另一方面是查看程式碼時會比較方法 , 第三是這是通常做法 :)
有空再一起研究研究 :)
先去睡一下 , 過幾天有空我會再過來的 :)
hi 威廉先生
請問可以教下其他vba碼的用途嗎?
我見到人地d碼有好多都有 dim
eg.
arr Dim i&, arr(1 To 240000) As Long
For i = 1 To 240000
arr(i) = Rnd * 1000000
Next i
見到其他人寫do loop 沒有end do
不會有問題嗎?
Do
xxxxxxxxx
Loop
伝
Hi 伝 ,
其實 dim 是用來定義一些變量的 ... 嗯 ... 類型吧 , 類型包括很多種 , INTEGER , STRING 等等 , 我都不知道用中文要怎麼寫 ~ 哈哈 ~
而你所提供的 dim i & , arr(1 ..... )
這是一個 array ... 嗯 ... 又一個中文難題 ... 要想一想再可以跟你詳細解釋了 XD
另外你所提到的 DO LOOP 沒有 END DO 問題嘛 ... 嗯 , 這個可能是我之前的教學文章都沒說過的吧 ... 嗯 ...
其實 DO ~ LOOP ~ 這個傢伙本身應該是 DO ~ LOOP UNTIL 吧 , 嗯 ... 應該是的 , 而 LOOP UNTIL 其中的作用就是把循環結束 , 打個比喻 ~
A = 1
DO
A = A + 1
LOOP UNTIL A = 100
MSGBOX " DONE "
當 A 的值等於 100 那這個 DO ~ LOOP ~ 就結束了 , 然後就顯示訊息 " DONE " , LOOP UNTIL 就是重複操作直至條件成立為止的意思 , 所以就不會出現 END 這個傢伙了 .
而另外 , END 的功能其實是程式碼結束的意思 , 只有程式碼結束才會使用 END 的 , 你可以試一下 , 造一個使用者介面 , 然後加一個按鈕 , 按鈕內的程式碼只加上 END 三個字 , 當你執行這個介面時 , 只要一按下那個按鈕 , 整個程式就結束了 :)
就是這樣了 , 有疑問的話可以再發問 , 我能解答的一定回 :)
請問威廉先生可以出1個dim的教學嗎?
还有,如果用函數做到的都不會用vba,
因為用函數可以馬上出答案.
昨天學了1個好有趣的東西
{=SUM(B1:B2-A1:A2)}
伝
Hi 伝 ,
關於 dim 的教學嘛 , 這個是一個好題目 , 有空一定寫 , 不過最近都比較忙 , 所以都很久沒寫教學文了 XD
我簡短地說一些基本的吧 , DIM 是用來定義一些變量類型的方法 , 而之前有提過的 INTEGER 和 STRING 類型其實是不同的 , INTEGER 是指整數 ( 好像是的 ... 嗯 , 不太記得 ... 哈 ) 而 STRING 是文字串 , 類型不同所用來記錄的變量就當然不同了 , 比喻說 , 你要使用者輸入名字 , 名字是字串 , 而不是數字 , 所以變量類型就要設定為 STRING , 等電腦知道這個變量要記錄的是文字而不是數字 ( 不過我自己很多時候都不會故意定義的 , 懶嘛 ~ 哈哈 ~ , 只要程式能跑就算了 ~ 哈哈 )
至於函數做到就不用 VBA 這個問題嘛 , 其實之前都有朋友問過我 , 為什麼要用 VBA 特意去寫程式呢 ?
其實是因為 VBA 能夠做到的比函數所做到的多很多嘛 , 增加工作頁 , 刪除工作頁 , 與WORD , ACCESS 等的連動等等 , 只要程式能順利完成 , 那麼工作就可以變得更輕鬆了 :)
至於函數呢 ? 如果有一些數字上的計算 , 當然是用函數方便多了 , 但是當同一個工作頁的函數公式太多 , 計算時間就會變得越來越長了 , 而檔案又會變成不合理的大容量 .
當然 , VBA 跟函數的功用有些是一樣的 , 但有些是不同的 , 我不會說那一個好那一個差 , 最重要的是 , 要學會利用 VBA 跟函數公式配合加快程式操作時間 , 這個才是真理呢 :)
我自己有一個用來工作的程式 , 當中包括了 VBA , 也包括了很多函數 , 例如 VLOOKUP , SUM , CONTENIENTE ( 好像寫錯了 ~ 忘了 ~ 哈哈 ) 很多都有 , 配合得好 , 程式就會跑得更順暢 , 更快了 :)
留意一下我的那些懶人計劃吧 :) 都是我習慣使用的 VBA 與函數的配合方法 , 參考參考 , 大家再研究研究 :)
你好丫威廉先生,
我最近聽到係word中可以在指定的格中打上文字,完成之後就會按所輸入的文字自動貼至文件的指定位置上,以快速完成表格.
請問可否指點指點.
謝謝
horien
發佈留言