標題:
[發問]
Userform將資料分類後key入工作簿裡各位置
[打印本頁]
作者:
lifedidi
時間:
2013-6-20 11:53
標題:
Userform將資料分類後key入工作簿裡各位置
本帖最後由 lifedidi 於 2013-6-20 11:54 編輯
大大好:
小弟需要弄一個userform,按下keyin鍵後,將userform裡的資料分類後key入工作簿各位置
工作簿(耗材清單)裡每一個耗材為12列組成,
附件裡有比較詳細的敘述,請參考。
[attach]15272[/attach]
謝謝。
作者:
lifedidi
時間:
2013-6-21 11:08
本帖最後由 lifedidi 於 2013-6-21 11:10 編輯
回復
1#
lifedidi
大大好!
小弟自己弄了一些程式碼,但是卡在無法設定找出當列最後一個值然後貼上,
請指教,
[attach]15278[/attach]
這樣的寫法不知道可不可行,如果OK
在名為"新增資料"的userform裡
紅色為我設定在第五列將資料copy上,實際上應要為當列資料最後一筆offset1欄後copy上。
尋找條件為"爐號"以及"型號(規格)",這兩筆資料為耗材裡獨一無二的資料,所以做為尋找依據,
Private Sub CommandButton1_Click()
'
略過
'
Set 爐號 = Cells.Find(What:=爐號1, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True)
With Sheet1
If Not (爐號 Is Nothing) Then
If 爐號.Offset(-2, 0) = 規格1 Then
i = 5
爐號.Offset(-9, i) = 新增資料.專案編號
爐號.Offset(-8, i) = 新增資料.製造傳票編號
爐號.Offset(-7, i) = 新增資料.領料重1
爐號.Offset(-6, i) = 新增資料.領料時間1
爐號.Offset(-5, i) = 新增資料.TextBox1
爐號.Offset(-4, i) = 新增資料.退料重1
爐號.Offset(-3, i) = 新增資料.退料時間1
爐號.Offset(-2, i) = 新增資料.TextBox1
爐號.Offset(-1, i) = 新增資料.真實姓名
爐號.Offset(0, i) = 新增資料.真實編號
Else
MsgBox "僅爐號相同"
Exit Sub
End If
Else
MsgBox "無對應資料"
Exit Sub
End If
End With
'
略過
'
End Sub
作者:
luhpro
時間:
2013-6-22 04:47
回復
2#
lifedidi
i = 爐號.Offset(-9, Columns.Count - 2).End(xlToLeft).Column - 爐號.Column + 1
另部分程式內容似乎有錯置 :
爐號.Offset(-6, i) = 新增資料.TextBox1
爐號.Offset(-5, i) = 新增資料.領料時間1
爐號.Offset(-3, i) = 新增資料.TextBox1
爐號.Offset(-2, i) = 新增資料.退料時間1
作者:
lifedidi
時間:
2013-6-24 10:20
回復
3#
luhpro
luhpro大大,謝謝你,已修正!
請教一下,我要一併算出庫存量,小弟不才這樣寫是錯的,請高手指導謝謝,
爐號.Offset(2, i) = Val(爐號.Offset(2, Columns.Count - 2).End(xlToLeft).Column - 爐號.Column) - (Val(新增資料.領料重1) - Val(新增資料.退料重1))
↑庫存量 = ↑當列最後一個數值(最後一筆資料庫存量) - ↑新一筆資料的使用淨重
作者:
luhpro
時間:
2013-6-26 23:38
本帖最後由 luhpro 於 2013-6-26 23:41 編輯
回復
4#
lifedidi
看不懂你的問題,
是哪裡錯了呢?
結果與你的預期不同?
還是會出現錯誤訊息?
是否可以敘述的更清楚一些.
另, 建議你的 UserForm 放在 Sheet.Activate 再呼叫 Show
而在 DeActivate 裡將他Hide較好.
作者:
lifedidi
時間:
2013-6-27 10:36
本帖最後由 lifedidi 於 2013-6-27 10:38 編輯
回復
5#
luhpro
luhpro大大好:
我這樣的設定很像有點亂,我會依照大大建議修改。
回到問題:
大大的程式碼沒問題!是小弟在下一步時出現問題,想請教!
《實際表格》 │ 《對應程式碼》
i = 爐號.Offset(-9, Columns.Count - 2).End(xlToLeft).Column - 爐號.Column + 1
專案編號 │ 爐號.Offset(-9, i) = 新增資料.專案編號
製造傳票編號 │ 爐號.Offset(-8, i) = 新增資料.製造傳票編號
領出數量 │ 爐號.Offset(-7, i) = 新增資料.領料重1
領出日期 │ 爐號.Offset(-6, i) = 新增資料.領料時間1
領出時間 │ 爐號.Offset(-5, i) = 新增資料.TextBox1
退回數量 │ 爐號.Offset(-4, i) = 新增資料.退料重1
退回日期 │ 爐號.Offset(-3, i) = 新增資料.退料時間1
退回時間 │ 爐號.Offset(-2, i) = 新增資料.TextBox1
員工姓名 │ 爐號.Offset(-1, i) = 新增資料.真實姓名
員工編號 │ 爐號.Offset(0, i) = 新增資料.真實編號
淨用重量 │ 爐號.Offset(1, i) = 新增資料.領料重1 - 新增資料.退料重1
庫存數量
│ 爐號.Offset(2, i) =
Val(爐號.Offset(2, Columns.Count - 2).End(xlToLeft).Column - 爐號.Column)
-
(Val(新增資料.領料重1) - Val(新增資料.退料重1))
以上在《庫存數量》有點問題,小弟的想法是庫存數量為【
前一筆資料的庫存數量
-
這次的淨用數量
】
算出來的值和實際的值不同
而前一筆的庫存數量位置怎麼抓呢?
這樣寫的值是抓到哪一格去了...
Val(爐號.Offset(2, Columns.Count - 2).End(xlToLeft).Column - 爐號.Column)
作者:
luhpro
時間:
2013-6-27 22:53
回復
6#
lifedidi
我覺得問題的關鍵應該是在於 :
"目前數量" 欄位剛開始是沒有資料的,
所以要抓末欄的欄號,
還是建議延用上面的方式抓末欄,
然後再將該指標位移到想要的位置去 :
爐號.Offset(2, i) = Val(爐號.Offset(2, 爐號.Offset(-9, Columns.Count - 2).End(xlToLeft).Column - 爐號.Column + 1)) - (Val(新增資料.領料重1) - Val(新增資料.退料重1))
試試看是否可以.
作者:
lifedidi
時間:
2013-6-28 09:27
回復
7#
luhpro
uhpro您好:
如果將資料改為
[attach]15330[/attach]
如紅色字體部分,這樣首筆資料進去抓的到600嗎?
謝謝!
作者:
luhpro
時間:
2013-6-30 21:51
回復 luhpro
uhpro您好:
如果將資料改為
如紅色字體部分,這樣首筆資料進去抓的到600嗎?
...
lifedidi 發表於 2013-6-28 09:27
首筆是嗎?
那 Column 不要加 1 就是前一筆資料囉 :
爐號.Offset(2, 爐號.Offset(-9, Columns.Count - 2).End(xlToLeft).Column - 爐號.Column)
作者:
lifedidi
時間:
2013-7-2 11:43
回復
9#
luhpro
大大,不好意思,小弟太笨了,自己改了幾次還是失敗!
我把檔案簡單化並上傳,請您幫忙,謝謝!
[attach]15347[/attach]
作者:
lifedidi
時間:
2013-7-2 11:52
回復
9#
luhpro
luhpro大大!被我亂弄出來了XD!
爐號.Offset(2, i) = Val(爐號.Offset(2, i - 1)) - (Val(新增資料.領料重1) - Val(新增資料.退料重1))
謝謝大大的幫忙!終於可以繼續弄下一步了
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)