~ 上傳‧分享‧網賺 ~
~ 免費上傳空間‧請即申請 Freak Share ~
~ 進入後請點選左上角 注冊 ! ~
~ 聲明事項 ~
如各位想把以下本文章轉貼 , 請記得要注明出處.
本文章之內容為本人之經驗所寫, 絕無抄襲成份, 特此聲明.
由於圖片製作需時, 所以更新會比較慢.
存放圖片的 SHARE A PIC SERVER 可能讀取速度較慢, 請耐心等待.
上一回的習作沒有把你搞瘋了吧 XD 哈哈 ~ 在學新的東東之前 , 先告訴你答案吧 ~
( Pic14_1 )
看到了吧 ~ 很簡單的判斷方法 , 如果沒有輸入對應的資料 , 那就顯示一個訊息 , 和自動選擇 A2 到 K2 所有的儲存格 , 把資料刪掉 ~ 呵呵呵 ~ 就是這麼簡單了 ~ 如果你想到了 , 那麼我就有真心的祝福你 ~ 你自己開發的工具很快就可以誕生嚕 ~ 不是現在的這一個哦 ~ 這只是練習來的 ~
好了 ~ 收拾一下心情 ~ 我們又要搞一個新的模組了 ~
這一次是放在 模組 AddRecord 裡面的 , 名稱就定義為 AddNewRecord 吧 ~ 上一次做出來的是在報表什麼都沒有的時候使用的 , 那麼 , 如果現在已經出現了第一行記錄 , 我們之前所編寫的 FirstRecord 根本就不能應用在這裡 , 因為 FirstRecord 是針對第二列 ( 就是第一個記錄位置 ) 來計設的 , 如果我們就這樣使用的話 , 一定會出問題的 , 所以我們要作出修改 .
( Pic14_2 )
由於第一個記錄出現了之後才會使用到這個模組 , 所以我們就要利用 End(xlDown) 這個命令來配合我們的需要 . 首先我們要讓程式選取 B1 的儲存格 ( 為什麼嗎 ? 之前有說過的 ~ 想一想哦 ~ ) , 之後 , 利用 ActiveCell.End(xlDown).Select 這句程式碼 , 命令電腦找出最後一個有資料而又是 B 行的儲存格 . 因為我們不會知道找出來的是 B 什麼的儲存格 , 但是我們必須要讓電腦記住這個數值 , 所以 , 程式碼就出現了 LastRec = ActiveCell.Row , 利用 LastRec 這個變數 , 記錄找到出來的儲存格的 "列" 的值 .
之後 , 利用 Worksheets("Sheet1").Range("A" & LastRec + 1).Value = LastRec 這一句程式碼 , 使電腦自動在適當位置把應該要有的數值加上去 , 打個比喻 , 如果 LastRec 的值是 7 , 那麼剛才的一句程式碼 , 就是要電腦在 儲存格 "A" & 7 + 1 , 即儲存格 A8 內的值變成 7 . 這裡對於初學者來說會有點煩人 , 因為利用這個方法的話 , 很多時要很細心地去想清楚 , 什麼時候要 +1 什麼時候要 -1 還有什麼時候不用更改 . 所以要好好的想清楚才加進程式碼 , 否則你一定會覺得煩死了 ~ XD
往下的一大段 , 和之前在做 FirstRecord 時沒有什麼分別 , 只是把原本指定了 A2 B2 的東西全部改過來 , 變成 "B" & LastRec + 1 等等 , 所以這裡就不再作詳細解釋了 , 值得再說一遍的 , 是怎樣利用 LastRec 等等的變數 , 使電腦按照我們的指示工作 , 緊記 , 如果要利用變數來取得不確定的數據位置 , 在使用時一定要先想清楚什麼時候要加或者減 , 還有就是要緊記程式碼的編寫方法 .Range("A" & LastRec ) , 假設你要在 "A" 這行使用 , 就要用 "" 給括住 , 再用 & 來告訴電腦後面的是變數 , 合起來才是我們想要的位置 .
嘿嘿嘿 ~ 呵呵呵 ~ 習題又來嚕 ~~~~
這一之和上一次沒什麼分別 , 分別就在於這次的記錄位置是一個不確定的數值 , 今次的比較麻 , 你就慢慢想一想吧 ~ 下一回 , 我再告訴你答案 , 先試試自己動腦筋想一想哦 ~ 否則你是學不會的 ~ 加油 ~ 加油 ~ 加油 ~
如果你上一次的習題搞定了 , 這一次都一定可以的 :) 今次的提示嘛 ... 嗯 ... 嗯 ... 嗯 ... 就記住 LastRec 吧 ~ 答案都差不多說出來了耶 ... ... ...
12 留言:
你好:
想要詢問為何我的成是偵錯會一直在這個地方出現Worksheets("sheet1").Range("A" & LastRec + 1).Value = LastRec
我輸入的資料在第二筆之後增加的就一直重疊在第二筆的上面.
這很困擾我.我對了程式碼也沒有錯,想學問原因.謝謝您^^ Linda
Hi Linda ,
如果你每次增加記錄時 , 程式都把資料不停地在同一個位置上重疊 , 那麼你要先檢查一下 , 有沒有把 LastRec 的值設定錯了 , 因為在這裡 LastRec 的值是要程式自己找的 , 如果你把它固定在 1 , 那麼不管怎樣 +1 答案都只會是 2 , 那麼增加記錄時 , 記錄的位置就會不停地在同一個儲存格上重疊了 .
如果還未能解決問題 , 就把你的程式碼貼出來吧 , 我幫你看一下 :)
Sub addnewrecord()
'尋找最後一個紀錄
Worksheets("sheet1").Range("B1").Select
ActiveCell.End(xlDown).Select
LastRec = ActiveCell.Row
----------------------------------
我寫完開始測試時都沒新增加紀錄編號.這邊我按f8偵測錯勿..看了好幾遍卻不知道問題出在哪了..請大大幫幫我解答..我想把檔案e-mail給你卻不知道你信箱@@
'自動增加紀錄編號
Worksheets("sheet1").Range("A" & LastRec + 1).Value = LastRec
電腦的錯誤訊息寫了什麼 ? 我把你的程式碼直接貼到我的 EXCEL 內執行都沒有問題呢 ~
另外下次記得要署名 , 方便辨認 :)
他出現的錯誤視窗如下
執行階段錯誤'1004;
應用程式或物件定義上的錯誤
而我又發現我的介面記錄按鈕未輸入程式讓它執行,裡面是空白..我該如何輸入?
我在15回問答中找到解答了~就是它"記錄"按鈕沒設定動作..所以導致上句程式沒法順利運作^^
HI 星 ~
問題解決了就好 , 記得多點來哦 :)
威廉先生 你好:
我跟樓上的'星"有同樣的問題..
不過我看不懂他所寫的:
"就是它"記錄"按鈕沒設定動作..所以導致上句程式沒法順利運作^^"
請問可以麻煩說明一下嗎?謝謝!!
Hi HangMan ~
" 記錄 " 按鈕要執行三個模組當中的其中一個模組 :)
有點不好意思的是 , 因為第一個系列的教學文都有好幾年歷史了 , 裡面可能有些地方打錯字 , 或者是解釋得不太好 , 而當年做出來的檔案又已經不知所蹤 , 所以我只能盡力回想 XD
請威廉先生幫我看一下
這段一直無法在程式執行把A2:K2刪除
If UserForm1.TextBox1.Text = "" Then Worksheets("sheet1").Range("A2:K2").Value = ""
If UserForm1.TextBox1.Text = "" Then MsgBox "請輸入產品"
==================================
Sub firstrecond()
'編號
Worksheets("sheet1").Range("A2").Value = "1"
'PI
If UserForm1.OptionButton1.Value = True Then Worksheets("sheet1").Range("B2").Value = "PI"
If UserForm1.OptionButton1.Value = True Then Worksheets("sheet1").Range("C2").Value = UserForm1.TextBox1.Text
If UserForm1.OptionButton1.Value = True Then Worksheets("sheet1").Range("D2").Value = UserForm1.TextBox2.Text
If UserForm1.OptionButton1.Value = True Then Worksheets("sheet1").Range("E2").Formula = "=today()"
Worksheets("sheet1").Range("E2").Value = Worksheets("sheet1").Range("E2").Value
'PM
If UserForm1.OptionButton2.Value = True Then Worksheets("sheet1").Range("B2").Value = "PM"
If UserForm1.OptionButton2.Value = True Then Worksheets("sheet1").Range("F2").Value = UserForm1.TextBox1.Text
If UserForm1.OptionButton2.Value = True Then Worksheets("sheet1").Range("G2").Value = UserForm1.TextBox2.Text
If UserForm1.OptionButton2.Value = True Then Worksheets("sheet1").Range("H2").Formula = "=today()"
Worksheets("sheet1").Range("H2").Value = Worksheets("sheet1").Range("H2").Value
'OUT
If UserForm1.OptionButton3.Value = True Then Worksheets("sheet1").Range("B2").Value = "OUT"
If UserForm1.OptionButton3.Value = True Then Worksheets("sheet1").Range("I2").Value = UserForm1.TextBox1.Text
If UserForm1.OptionButton3.Value = True Then Worksheets("sheet1").Range("J2").Value = UserForm1.TextBox2.Text
If UserForm1.OptionButton3.Value = True Then Worksheets("sheet1").Range("K2").Formula = "=today()"
Worksheets("sheet1").Range("K2").Value = Worksheets("sheet1").Range("K2").Value
'都沒選
If UserForm1.TextBox1.Text = "" Then Worksheets("sheet1").Range("A2:K2").Value = ""
If UserForm1.TextBox1.Text = "" Then MsgBox "請輸入產品"
If UserForm1.TextBox1.Text = "" Then Worksheets("sheet1").Range("A2:K2").Value = ""
If UserForm1.TextBox2.Text = "" Then MsgBox "請輸入數量"
If UserForm1.OptionButton1.Value = False And UserForm1.OptionButton2.Value = False And UserForm1.OptionButton3.Value = False Then MsgBox "沒有選擇狀態"
If UserForm1.TextBox1.Text = "" Then Worksheets("sheet1").Range("A2:K2").Value = ""
End Sub
Hi Yin Bin ~
我剛剛測試過 , 我的可以正常運作 , 你再試試把程式碼加一句進去 , 改成這樣再試試好嗎 :)
If UserForm1.TextBox1.Text = "" Then Worksheets("Sheet1").Range("A2:K2").Select
If UserForm1.TextBox1.Text = "" Then Worksheets("sheet1").Range("A2:K2").Value = ""
If UserForm1.TextBox1.Text = "" Then MsgBox "請輸入產品"
If UserForm1.TextBox1.Text = "" Then Worksheets("Sheet1").Range("A2:K2").Select
If UserForm1.TextBox1.Text = "" Then Worksheets("sheet1").Range("A2:K2").Value = ""
If UserForm1.TextBox2.Text = "" Then MsgBox "請輸入數量"
好怪.還是不行
還是問題是在EXCEL的設定裡面阿
我把文件貼上來.麻煩威廉先生有空在你的電腦上測試看看.
https://docs.google.com/leaf?id=0B5L5Q7qBnYPUNTliODY5OGUtMjY3NS00NmVkLTg1NjQtNjRmYmNiNTIyYTQy&hl=zh_TW&authkey=CLTS-9EE
發佈留言