返回列表 上一主題 發帖

[發問] Userform將資料分類後key入工作簿裡各位置

[發問] Userform將資料分類後key入工作簿裡各位置

本帖最後由 lifedidi 於 2013-6-20 11:54 編輯

大大好:

小弟需要弄一個userform,按下keyin鍵後,將userform裡的資料分類後key入工作簿各位置

工作簿(耗材清單)裡每一個耗材為12列組成,

附件裡有比較詳細的敘述,請參考。

耗材進出簿.rar (766.43 KB)

謝謝。

本帖最後由 lifedidi 於 2013-6-21 11:10 編輯

回復 1# lifedidi


大大好!
小弟自己弄了一些程式碼,但是卡在無法設定找出當列最後一個值然後貼上,
請指教,

耗材進出簿20130621.rar (734.33 KB)

這樣的寫法不知道可不可行,如果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

TOP

回復 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

TOP

回復 3# luhpro

luhpro大大,謝謝你,已修正!

請教一下,我要一併算出庫存量,小弟不才這樣寫是錯的,請高手指導謝謝,

爐號.Offset(2, i) = Val(爐號.Offset(2, Columns.Count - 2).End(xlToLeft).Column - 爐號.Column) - (Val(新增資料.領料重1) - Val(新增資料.退料重1))

↑庫存量      =      ↑當列最後一個數值(最後一筆資料庫存量)     -         ↑新一筆資料的使用淨重

TOP

本帖最後由 luhpro 於 2013-6-26 23:41 編輯

回復 4# lifedidi

看不懂你的問題,

是哪裡錯了呢?

結果與你的預期不同?

還是會出現錯誤訊息?

是否可以敘述的更清楚一些.

另, 建議你的 UserForm 放在 Sheet.Activate 再呼叫 Show
而在 DeActivate 裡將他Hide較好.

TOP

本帖最後由 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)

TOP

回復 6# lifedidi
我覺得問題的關鍵應該是在於 :
"目前數量" 欄位剛開始是沒有資料的,
所以要抓末欄的欄號,
還是建議延用上面的方式抓末欄,
然後再將該指標位移到想要的位置去 :

爐號.Offset(2, i) = Val(爐號.Offset(2, 爐號.Offset(-9, Columns.Count - 2).End(xlToLeft).Column - 爐號.Column + 1)) - (Val(新增資料.領料重1) - Val(新增資料.退料重1))

試試看是否可以.

TOP

回復 7# luhpro

uhpro您好:

如果將資料改為



如紅色字體部分,這樣首筆資料進去抓的到600嗎?

謝謝!

TOP

回復  luhpro
uhpro您好:
如果將資料改為
如紅色字體部分,這樣首筆資料進去抓的到600嗎?
...
lifedidi 發表於 2013-6-28 09:27

首筆是嗎?
那 Column 不要加 1 就是前一筆資料囉 :

爐號.Offset(2, 爐號.Offset(-9, Columns.Count - 2).End(xlToLeft).Column - 爐號.Column)

TOP

回復 9# luhpro

大大,不好意思,小弟太笨了,自己改了幾次還是失敗!

我把檔案簡單化並上傳,請您幫忙,謝謝!

耗材進出簿20130702.rar (227.5 KB)

TOP

        靜思自在 : 【是否發揮了良能?】人間壽命因為短暫,才更顯得珍貴。難得來一趟人間,應問是否為人間發揮了自己的良能,而不要一味求長壽。
返回列表 上一主題