Cập nhật dữ liệu giữa các sheet.

Liên hệ QC

ptlong04x1

Thành viên tích cực
Tham gia
15/10/08
Bài viết
1,031
Được thích
1,531
Nghề nghiệp
Kỹ sư xây dựng
Bạn kienngan có nhờ mình gửi hộ file đính kèm, mọi người giúp bạn ấy với nhé.

Mình là kienngan thành viên mới của giaiphapexcel.
Mình có upload file để nhờ các bạn giúp mình cập nhật dữ liệu từ sheet này sang sheet khác, nhưng mình không upload được. Vì thế mình gửi file qua email cho bạn. Các bạn vui lòng giúp đỡ mình nhé! Mình cảm ơn mọi người.
 

File đính kèm

Muốn vui cũng khó mà vui nổi

Bạn kienngan có nhờ mình gửi hộ file đính kèm, mọi người giúp bạn ấy với nhé.

Cả hai bảng đều trống trơn như vậy thì biết làm sao?

Chí ít cũng phải biết mã NVL của bạn dài bao nhiêu ký tự; Mã kho thì phải biết bao nhiêu kho để lập mã cho tiện;
Nếu là chuyển từ Phiếu nhập sang sổ chi tiết thì bạn tìm trên diễn đàn cũng có vài dạng

Thân ái!
 
Upvote 0
chào các bạn!
Mã NVL của mình dài tối đa 10 ký tự, cty mình chỉ có 1 kho thôi. mình muốn tạo 1 nút lệnh, khi nhấp vào thì sẽ tự động kết xuất dữ liệu từ phiếu sang sổ chi tiết.
các bạn giúp mình nhé! thanks!
 
Upvote 0
chào các bạn!
Mã NVL của mình dài tối đa 10 ký tự, cty mình chỉ có 1 kho thôi. mình muốn tạo 1 nút lệnh, khi nhấp vào thì sẽ tự động kết xuất dữ liệu từ phiếu sang sổ chi tiết.
các bạn giúp mình nhé! thanks!
như thế ý bạn có phải là tạo 1 nút mà khi ấn vào nút đó thì tất cả dữ liệu bạn nhập được từ Sheet "PHIEU NHAP KHO" sẽ được chuyển sang sheet "SO CHI TIET NHAP" đúng không bạn?
 
Upvote 0
Mình là lính mới, cũng đang băn khoan nội dung như bác kienngan. Ai chỉ giao voi
 
Upvote 0

Từ Excel vào menu View\Toolbars\Visual Basic
Chọn biểu tượng hình cái búa và cái cà lê gác chéo qua nhau
Chọn Command Button, rồi vẽ lên vị trí nào bạn muốn trên sheet
Dblclick vào Command Button này rồi paste đoạn code sau vào (bỏ dòng đầu tiên và dòng cuối vỉ Excel đã tự chèn vào rồi)
Đóng cửa sổ viết lệnh (VBA) này lại, rồi click vào button Design Mode trên thanh Toolbars Visual Basic
Nhập vài NVL vào sheet!PHIEU NHAP KHO và Click thử nha
Mã:
Private Sub CommandButton1_Click()
   Dim DongNVL, CuoiSoCT, i, n
   With Application: .EnableEvents = False: .Calculation = xlManual: .ScreenUpdating = False: End With
   CuoiSoCT = Sheets("SO CHI TIET NHAP").Cells(65500, 2).End(xlUp).Row
   
   Sheets("PHIEU NHAP KHO").Activate
   DongNVL = Cells(65500, 4).End(xlUp).Row - 8: n = 0
   If DongNVL > 0 Then
      For i = 1 To DongNVL
         If [B5].Offset(i, 0).Value = vbNullString Then GoTo Ket
         n = n + 1
         With Sheets("SO CHI TIET NHAP")
            .Range(.Cells(CuoiSoCT + i, 1), .Cells(CuoiSoCT + i, 8)).EntireRow.Insert
            .Cells(CuoiSoCT + i, 1) = [I2].Value
            .Cells(CuoiSoCT + i, 2) = [E2].Value
            .Cells(CuoiSoCT + i, 3) = [B5].Offset(i, 0).Value
            .Cells(CuoiSoCT + i, 4) = [D5].Offset(i, 0).Value
            .Cells(CuoiSoCT + i, 5) = [E5].Offset(i, 0).Value
            .Cells(CuoiSoCT + i, 6) = [F5].Offset(i, 0).Value
            .Cells(CuoiSoCT + i, 7) = [G5].Offset(i, 0).Value
            .Cells(CuoiSoCT + i, 8).FormulaR1C1 = "=RC[-2]*RC[-1]"
         End With
      Next i
   End If

Ket:
   With Application: .Calculation = xlAutomatic: .ScreenUpdating = True: .EnableEvents = True: End With
   MsgBox "Da chen: (" & n & ") nguyen vat lieu vao so chi tiet", , "Nhap vao so CT"
End Sub
 
Upvote 0
Bạn thêm vào 1 dòng lệnh nữa phòng khi Sheet!SO CHI TIET NHAP là mới chưa có dòng nào
Toàn bộ code sửa lại là
Mã:
Private Sub CommandButton1_Click()
   Dim DongNVL, CuoiSoCT, i, n
   With Application: .EnableEvents = False: .Calculation = xlManual: .ScreenUpdating = False: End With
   CuoiSoCT = Sheets("SO CHI TIET NHAP").Cells(65500, 2).End(xlUp).Row
   [COLOR="Red"]If CuoiSoCT = 2 Then CuoiSoCT = CuoiSoCT + 1[/COLOR]
   
   Sheets("PHIEU NHAP KHO").Activate
   DongNVL = Cells(65500, 4).End(xlUp).Row - 8: n = 0
   If DongNVL > 0 Then
      For i = 1 To DongNVL
         If [B5].Offset(i, 0).Value = vbNullString Then GoTo Ket
         n = n + 1
         With Sheets("SO CHI TIET NHAP")
            .Range(.Cells(CuoiSoCT + i, 1), .Cells(CuoiSoCT + i, 8)).EntireRow.Insert
            .Cells(CuoiSoCT + i, 1) = [I2].Value
            .Cells(CuoiSoCT + i, 2) = [E2].Value
            .Cells(CuoiSoCT + i, 3) = [B5].Offset(i, 0).Value
            .Cells(CuoiSoCT + i, 4) = [D5].Offset(i, 0).Value
            .Cells(CuoiSoCT + i, 5) = [E5].Offset(i, 0).Value
            .Cells(CuoiSoCT + i, 6) = [F5].Offset(i, 0).Value
            .Cells(CuoiSoCT + i, 7) = [G5].Offset(i, 0).Value
            .Cells(CuoiSoCT + i, 8).FormulaR1C1 = "=RC[-2]*RC[-1]"
         End With
      Next i
   End If

Ket:
   With Application: .Calculation = xlAutomatic: .ScreenUpdating = True: .EnableEvents = True: End With
   MsgBox "Da chen: (" & n & ") nguyen vat lieu vao so chi tiet", , "Nhap vao so CT"
End Sub
 
Upvote 0
Thêm một tham khảo, xem trong file đính kèm

PHP:
Option Explicit
Sub NhapKho()
 Dim Sh As Worksheet, Rng As Range
 
 Set Sh = Sheets("SoChiTietNhap")
 Set Rng = Range("C6:H" & [c13].End(xlUp).Row)
 With Sh.[A65500].End(xlUp).Offset(1)
   .Resize(Rng.Rows.Count).Value = [G3].Value
   .Offset(, 1).Resize(Rng.Rows.Count).Value = [I3].Value
   Rng.Copy Destination:=.Offset(, 2)
 End With
End Sub
 

File đính kèm

Upvote 0
Bạn thêm vào 1 dòng lệnh nữa phòng khi Sheet!SO CHI TIET NHAP là mới chưa có dòng nào
Sao mình chép code vào và thử nhập dữ liệu nhưng lại báo đã nhập "0" chúng từ vậy bạn.
Bạn có thể hướng dẫn làm mà không phải chép code không. Ví dụ mình muốn làm với yêu cầu tương tự trên file khác thì phải làm thế nào? Cám ơn bạn nhiều...
 
Upvote 0
Sao mình chép code vào và thử nhập dữ liệu nhưng lại báo đã nhập "0" chúng từ vậy bạn.
Bạn có thể hướng dẫn làm mà không phải chép code không. Ví dụ mình muốn làm với yêu cầu tương tự trên file khác thì phải làm thế nào? Cám ơn bạn nhiều...
Sao bạn không thử làm là nhập thẳng vào bảng chi tiết, và thiết kế 1 phiếu nhập, cần số phiếu nào thì in số phiếu đó ra.
Làm như bạn giả sử mình muốn in số phiếu cũ thì làm sao nào?
 
Upvote 0
PHP:
Option Explicit
Sub NhapKho()
 Dim Sh As Worksheet, Rng As Range
 
 Set Sh = Sheets("SoChiTietNhap")
 Set Rng = Range("C6:H" & [c13].End(xlUp).Row)
 With Sh.[A65500].End(xlUp).Offset(1)
   .Resize(Rng.Rows.Count).Value = [G3].Value
   .Offset(, 1).Resize(Rng.Rows.Count).Value = [I3].Value
   Rng.Copy Destination:=.Offset(, 2)
 End With
End Sub
---
Mong được anh hướng dẫn câu lệnh này: Rng.Copy Destination:=.
Và theo file anh đính kèm, trong trường hợp cần in số phiếu củ (số bất kỳ) thì code được viết như thế nào? Giống như bạn domfootwear đã nêu.
giả sử mình muốn in số phiếu cũ thì làm sao
Cám ơn
 
Upvote 0
(1) Anh hướng dẫn câu lệnh này: Rng.Copy Destination:=.
(2) Và theo file anh đính kèm, trong trường hợp cần in số phiếu củ (số bất kỳ) thì code được viết như thế nào? Giống như bạn domfootwear đã nêu.


(1)

Bạn chọn 1 vùng nào đó trong các cột A:F & cho chạy macro này
PHP:
Sub DesTination_ ()
 Selection.Copy Destination:=[H1]
End Sub


(2)
Tại kết cấu của tác giả như vậy & iêu cầu thế thì mình làm thế; Còn nghiệp vụ thì mình miễn bàn;

Hồi xưa thì mình cũng làm khác đó; Nhưng . . . . . chúng ta chờ í tác gia vậy! --=0
 
Upvote 0
(1)

Bạn chọn 1 vùng nào đó trong các cột A:F & cho chạy macro này
PHP:
Sub DesTination_ ()
 Selection.Copy Destination:=[H1]
End Sub

(2)
Tại kết cấu của tác giả như vậy & iêu cầu thế thì mình làm thế; Còn nghiệp vụ thì mình miễn bàn;

Hồi xưa thì mình cũng làm khác đó; Nhưng . . . . . chúng ta chờ í tác gia vậy! --=0
---
Chủ yếu em xem anh viết code ngược lại (tìm lại phiếu củ) để học thôi và ứng dụng vào việc khác. :-=
 
Upvote 0
Sao mình chép code vào và thử nhập dữ liệu nhưng lại báo đã nhập "0" chúng từ vậy bạn.
Bạn có thể hướng dẫn làm mà không phải chép code không. Ví dụ mình muốn làm với yêu cầu tương tự trên file khác thì phải làm thế nào? Cám ơn bạn nhiều...

Có lẽ bạn đã không nhập mã NVL vào cột B của Sheet!PHIEU NHAP KHO (vì ở sheet này mình giữ nguyên cấu trúc các cột của người hỏi, mà mình thấy ở phần nhập mã NVL thì lại có 02 cột nên mình giả sử nhập mã vào cột B).

1- Bạn muốn nhấn nút thì tự ghi mà thì buộc phải chép code còn trường hợp dùng kỹ thuật Wrap đối tựơng thì dài lắm.

2- Để áp dụng cho Workbook khác thì bạn phải sửa lại code: Tên của cả 02 sheet mình cũng để cả vào đó rồi (cho rõ và không sợ là sheet nao đang giữ quyền Activate), bạn sửa lại 02 tên sheet này cho phù hợp với Workbook của bạn.

3-Bạn đọc lại bài #7 của mình đã nêu cách tạo Command Button rồi.

Mình gởi kèm theo file này, bạn thử text lại nha. Chúc bạn thành công.
 

File đính kèm

Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom