Tạo một button In-Tiếp??

Liên hệ QC

Võ Thiếu Gia

Thành viên hoạt động
Tham gia
19/7/08
Bài viết
105
Được thích
54
Ở đây, Võ có 1 phiếu xuất kho kiêm hóa đơn. Các pác tại giúp chỉ Võ cách tạo một button mà khi mình xuất xong 1 hóa dơn. Mình Click vô button đó thì sẽ xóa trống toàn hóa đơn để xuất hóa đơn khác. Khi đó số của Hóa đơn sẽ cộng tăng lên 1.

Pác nào help mình với. Với mấy cái Macro Võ cùi lắm. Thanks a lot
Mong các pác giúp Võ với. Võ chưa biết gì về VBA
 

File đính kèm

Chỉnh sửa lần cuối bởi điều hành viên:
Không hiểu tạo sao luôn. Giúp mình ở file đính kèm với

Tại sao ư? Tại vì bạn không đọc kỹ sách của Ông Văn Thông (theo như bạn nói).

1. Bạn gắp field Data thả vào ô Total xem sao.
2. [Số lượng], [thành tiền], [đơn giá], [chiết khấu] bạn chọn là count thì làm sao SUM được, click chuột phải lên field đó và chọn Field Setting; đặt lại Name cho Fields; trong phần Summarize by: chọn là SUM.
3. Những field bên phải, như: [NGÀY], [SỐ HĐ], [TÊN KH]... hãy double click vào tiêu đề field đó, trong phần Subtotal chọn None là xong thôi! Bạn làm thử xem!
 
Upvote 0
Huhuhu, nguyên con gà

Tại sao ư? Tại vì bạn không đọc kỹ sách của Ông Văn Thông (theo như bạn nói).

1. Bạn gắp field Data thả vào ô Total xem sao.
2. [Số lượng], [thành tiền], [đơn giá], [chiết khấu] bạn chọn là count thì làm sao SUM được, click chuột phải lên field đó và chọn Field Setting; đặt lại Name cho Fields; trong phần Summarize by: chọn là SUM.
3. Những field bên phải, như: [NGÀY], [SỐ HĐ], [TÊN KH]... hãy double click vào tiêu đề field đó, trong phần Subtotal chọn None là xong thôi! Bạn làm thử xem!

Nó không hiện ra cái gì nữa hết. Giúp mình thêm tí nữa. Thanks
 

File đính kèm

Upvote 0
Bạn Ca-Dafi ơi, cho em hỏi xíu, mình chưa học về pivottable nhưng cũng nghiên cứu sơ sơ trên mạng và thấy hay hay nhưng không hiểu lắm,bạn có thể hướng dẫn mình đôi nét về nó được không, trước trước mình đọc trên mạng và cũng thử làm nhưng khi update dữ liệu mới vào bảng chi tiết thì bảng tổng hợp không thay đổi gì hết không biết vậy có phải là sai không bạn
 
Upvote 0
Bạn Ca-Dafi ơi, cho em hỏi xíu, mình chưa học về pivottable nhưng cũng nghiên cứu sơ sơ trên mạng và thấy hay hay nhưng không hiểu lắm,bạn có thể hướng dẫn mình đôi nét về nó được không, trước trước mình đọc trên mạng và cũng thử làm nhưng khi update dữ liệu mới vào bảng chi tiết thì bảng tổng hợp không thay đổi gì hết không biết vậy có phải là sai không bạn

Trường hợp này, bạn cũng chỉ cần refresh data lại là xong. Cách refresh thì đơn giản rồi bạn nhé!
Bạn có thể tham khảo thêm về Pivotable tại đây!
http://www.giaiphapexcel.com/forum/showthread.php?t=1428
 
Upvote 0
Upvote 0
Cảm ơn bạn thiếu gia nha, mình làm được nút in rồi. Bạn ơi, nếu mình muốn dùng nút này đề lọc dữ liệu thì được không bạn, vui lòng hướng dẫn dùm mình luôn nha, Thanks

Vẫn làm được hết. Nhưng mấy cái đó phải viết bằng code. Mà mấy cái code thì mình chịu. Bạn hỏi Mr Ca_dafi nhé.
 
Upvote 0
Dear Mr Ca_dafi

Cho minh hỏi. Ở flie Xuat Kho mà bạn đã giúp mình. Mình vẫn thắc mắc.
Thắc mắc ở 2 điểm:
  1. Sheet DATA. Bạn đã dùng những chức năng để nó lọc ra được như vậy. Mình đã nghiên cứu mấy ngày nay nhưng vẫn không hiểu. Phải chăng bạn dùng Data/Consolidate???
  2. Sheet XUAT ở Combo box SAVE thì bạn dùng code VBA hay Macro. Nếu dùng Macro thì qui trình nó như thế nào.
Như mình đã nói ở phần trên. Nếu dùng VBA code thì chỉ mình cách dùng cái đó với. VBA mình điếc.

Giúp mình giải thích hai vấn đề này với nha. Thank
 

File đính kèm

Upvote 0
Dear Mr Ca_dafi

Mình đã đọc được 4 Macro mà bạn đã viết cho mình. Thật sự, mình đã nghiên cứu được là bạn dùng Macro. Nhưng khi Edit 4 cái Macro (LuuDuLieu, Macro2, TangSoCtu, XoaDuLieu) trong Sheet DATA.

Theo như mình đã nói. Về ngôn ngữ VBA thì mình chịu. Nhờ bạn giải thích hộ mình 4 cái Macro đó với nhé. Thanks
 

File đính kèm

Upvote 0
Dear Mr Ca_dafi

Cho minh hỏi. Ở flie Xuat Kho mà bạn đã giúp mình. Mình vẫn thắc mắc.
Thắc mắc ở 2 điểm:
  1. Sheet DATA. Bạn đã dùng những chức năng để nó lọc ra được như vậy. Mình đã nghiên cứu mấy ngày nay nhưng vẫn không hiểu. Phải chăng bạn dùng Data/Consolidate???
  2. Sheet XUAT ở Combo box SAVE thì bạn dùng code VBA hay Macro. Nếu dùng Macro thì qui trình nó như thế nào.
Như mình đã nói ở phần trên. Nếu dùng VBA code thì chỉ mình cách dùng cái đó với. VBA mình điếc.

Giúp mình giải thích hai vấn đề này với nha. Thank

Dear Mr Ca_dafi
Mình vừa nghiên cứu ra được. Ở cái Sheet DATA mà bạn đã làm. Thực ra là bạn đã dùng UserForm. Mình đã tiến hành làm thử như chỉ dẫn. Nhưng than ôi. Quả là một kỳ công cực khổ. Mình đã làm cho bạn vất vã nhiều quá. Cám ơn bạn rất rất nhiều. Nếu có dịp offline cùng GPE mình sẽ đền đáp công ơn này.

Thanks Thanks Thank you very much
 
Upvote 0
Dear Mr Ca_dafi

Cho minh hỏi. Ở flie Xuat Kho mà bạn đã giúp mình. Mình vẫn thắc mắc.
Thắc mắc ở 2 điểm:
  1. Sheet DATA. Bạn đã dùng những chức năng để nó lọc ra được như vậy. Mình đã nghiên cứu mấy ngày nay nhưng vẫn không hiểu. Phải chăng bạn dùng Data/Consolidate???


  1. Thực chất sheet Data là sheet lưu lại tất cả các phiếu nhập/xuất của bạn. Tại sheet XUAT (sheet này có chức năng tương tự một form nhập liệu), sau khi nhập liệu và in ra xong, ta ấn nút SAVE. Ta gán cho thao tác ấn nút này một thủ tục, thủ tục này có tên LuuDuLieu nằm tại module MainFunction, ấn Alt+F11 sẽ thấy:
    PHP:
    Sub LuuDuLieu()
    'Kiem tra xem co du lieu de luu hay khong? 
    If Sheets("Xuat").Range("StartRow") = "" Or IsNull(Sheets("Xuat").Range("StartRow")) Then
        MsgBox "Khong co du lieu de luu!Vui long kiem tra lai!", , "Canh bao!"
        Exit Sub
    Else     "Bắt đầu copy
        Dim MaxDataRow, StartRow, EndRow, Zi, Zj As Integer
        MaxDataRow = Sheets("Data").[A65000].End(xlUp).Row + 1
        StartRow = Sheets("Xuat").Range("StartRow")
        EndRow = Sheets("Xuat").Range("EndRow")
        Zj = 0
        For Zi = StartRow To EndRow
                With Sheets("Data")
                        .Cells(MaxDataRow + Zj, 1) = Sheets("Xuat").Cells(Zi + 8, 1)
                        .Cells(MaxDataRow + Zj, 2) = Sheets("Xuat").Range("LoaiCtu")
                        .Cells(MaxDataRow + Zj, 3) = Sheets("Xuat").[G5]
                        .Cells(MaxDataRow + Zj, 4) = Sheets("Xuat").[G6]
                        .Cells(MaxDataRow + Zj, 5) = Year(Sheets("Xuat").[G6]) & Right("00" &  Month(Sheets("Xuat").[G6]), 2)
                        .Cells(MaxDataRow + Zj, 6) = Sheets("Xuat").Range("TenNVBH")
                        .Cells(MaxDataRow + Zj, 7) = Sheets("Xuat").Range("MaKhach")
                        .Cells(MaxDataRow + Zj, 8) = Sheets("Xuat").Range("TenKhach")
                        .Cells(MaxDataRow + Zj, 9) = Sheets("Xuat").Range("DiaChi")
                        .Cells(MaxDataRow + Zj, 10) = Sheets("Xuat").Range("DienThoai")
                        .Cells(MaxDataRow + Zj, 11) = Sheets("Xuat").Cells(Zi + 8, 2)
                        .Cells(MaxDataRow + Zj, 12) = Sheets("Xuat").Cells(Zi + 8, 3)
                        .Cells(MaxDataRow + Zj, 13) = Sheets("Xuat").Cells(Zi + 8, 4)
                        .Cells(MaxDataRow + Zj, 14) = Sheets("Xuat").Cells(Zi + 8, 5)
                        .Cells(MaxDataRow + Zj, 15) = Sheets("Xuat").Cells(Zi + 8, 6)
                        .Cells(MaxDataRow + Zj, 16) = Sheets("Xuat").Cells(Zi + 8, 7)
                        .Cells(MaxDataRow + Zj, 17) = Sheets("Xuat").Range("ChietKhau") * Sheets("Xuat").Cells(Zi + 8, 7)
                        .Cells(MaxDataRow + Zj, 18) = Sheets("Xuat").Cells(Zi + 8, 7) * (1 - Sheets("Xuat").Range("ChietKhau"))
                End With
                Zj = Zj + 1
        Next Zi
    "=======================================================================================
    "Tăng số chứng từ lên:
        Call TangSoCtu
    "=======================================================================================
        a = MsgBox("Du Lieu da duoc luu thang cong, ban co muon xoa de nhap moi khong?", vbYesNo, "Du lieu da duoc luu...")
        If a = vbYes Then Call XoaDuLieu Else Exit Sub     "Hỏi xem có muốn để lại dữ liệu trên phiếu để làm tiếp hay xóa hết!?
    "=======================================================================================
    End If

    ...Sheet XUAT ở Combo box SAVE thì bạn dùng code VBA hay Macro. Nếu dùng Macro thì qui trình nó như thế nào.
    Đây không phải là combobox SAVE mà là commandbutton SAVE. Commanbutton này tạo từ Control Toolbox (Click chuột phải lên thanh menu chọn control Toolbox). Bạn nghiên cứu từ từ nhé!

    Đối với việc báo cáo bằng Pivot, để không phải mỗi lần cập nhật phiếu ta phải khai báo lại vùng dữ liệu, mình có đặt 1 Name động tên Data (Bạn vào Insert/Name/Define... sẽ thấy)
    Data = OFFSET(DATA!$A$2,,,COUNTA(DATA!$A:$A),18)
    Nghĩa là: Vùng Data = Từ vị trí A2 của sheet Data, mở rộng xuống với số dòng bằng với số dữ liệu đếm được ở cột A và mở rộng ra 18 cột
    COUNTA(DATA!$A:$A) nhằm đếm xem sheet Data có bao nhiêu dòng dữ liệu
 
Lần chỉnh sửa cuối:
Upvote 0
Thực chất sheet Data là sheet lưu lại tất cả các phiếu nhập/xuất của bạn. Tại sheet XUAT (sheet này có chức năng tương tự một form nhập liệu), sau khi nhập liệu và in ra xong, ta ấn nút SAVE. Ta gán cho thao tác ấn nút này một thủ tục, thủ tục này có tên LuuDuLieu nằm tại module MainFunction, ấn Alt+F11 sẽ thấy:
PHP:
Sub LuuDuLieu()
'Kiem tra xem co du lieu de luu hay khong? 
If Sheets("Xuat").Range("StartRow") = "" Or IsNull(Sheets("Xuat").Range("StartRow")) Then
    MsgBox "Khong co du lieu de luu!Vui long kiem tra lai!", , "Canh bao!"
    Exit Sub
Else     "Bắt đầu copy
    Dim MaxDataRow, StartRow, EndRow, Zi, Zj As Integer
    MaxDataRow = Sheets("Data").[A65000].End(xlUp).Row + 1
    StartRow = Sheets("Xuat").Range("StartRow")
    EndRow = Sheets("Xuat").Range("EndRow")
    Zj = 0
    For Zi = StartRow To EndRow
            With Sheets("Data")
                    .Cells(MaxDataRow + Zj, 1) = Sheets("Xuat").Cells(Zi + 8, 1)
                    .Cells(MaxDataRow + Zj, 2) = Sheets("Xuat").Range("LoaiCtu")
                    .Cells(MaxDataRow + Zj, 3) = Sheets("Xuat").[G5]
                    .Cells(MaxDataRow + Zj, 4) = Sheets("Xuat").[G6]
                    .Cells(MaxDataRow + Zj, 5) = Year(Sheets("Xuat").[G6]) & Right("00" &  Month(Sheets("Xuat").[G6]), 2)
                    .Cells(MaxDataRow + Zj, 6) = Sheets("Xuat").Range("TenNVBH")
                    .Cells(MaxDataRow + Zj, 7) = Sheets("Xuat").Range("MaKhach")
                    .Cells(MaxDataRow + Zj, 8) = Sheets("Xuat").Range("TenKhach")
                    .Cells(MaxDataRow + Zj, 9) = Sheets("Xuat").Range("DiaChi")
                    .Cells(MaxDataRow + Zj, 10) = Sheets("Xuat").Range("DienThoai")
                    .Cells(MaxDataRow + Zj, 11) = Sheets("Xuat").Cells(Zi + 8, 2)
                    .Cells(MaxDataRow + Zj, 12) = Sheets("Xuat").Cells(Zi + 8, 3)
                    .Cells(MaxDataRow + Zj, 13) = Sheets("Xuat").Cells(Zi + 8, 4)
                    .Cells(MaxDataRow + Zj, 14) = Sheets("Xuat").Cells(Zi + 8, 5)
                    .Cells(MaxDataRow + Zj, 15) = Sheets("Xuat").Cells(Zi + 8, 6)
                    .Cells(MaxDataRow + Zj, 16) = Sheets("Xuat").Cells(Zi + 8, 7)
                    .Cells(MaxDataRow + Zj, 17) = Sheets("Xuat").Range("ChietKhau") * Sheets("Xuat").Cells(Zi + 8, 7)
                    .Cells(MaxDataRow + Zj, 18) = Sheets("Xuat").Cells(Zi + 8, 7) * (1 - Sheets("Xuat").Range("ChietKhau"))
            End With
            Zj = Zj + 1
    Next Zi
"=======================================================================================
"Tăng số chứng từ lên:
    Call TangSoCtu
"=======================================================================================
    a = MsgBox("Du Lieu da duoc luu thang cong, ban co muon xoa de nhap moi khong?", vbYesNo, "Du lieu da duoc luu...")
    If a = vbYes Then Call XoaDuLieu Else Exit Sub     "Hỏi xem có muốn để lại dữ liệu trên phiếu để làm tiếp hay xóa hết!?
"=======================================================================================
End If


Đây không phải là combobox SAVE mà là commandbutton SAVE. Commanbutton này tạo từ Control Toolbox (Click chuột phải lên thanh menu chọn control Toolbox). Bạn nghiên cứu từ từ nhé!

Đối với việc báo cáo bằng Pivot, để không phải mỗi lần cập nhật phiếu ta phải khai báo lại vùng dữ liệu, mình có đặt 1 Name động tên Data (Bạn vào Insert/Name/Define... sẽ thấy)

Như vậy, cho mình hỏi. Nếu mình muốn tăng SốHD lên 3 hay 4 con số (Giống như đến 999 hay 9999) thì code phải thay đổi như thế nào
 
Upvote 0
Như vậy, cho mình hỏi. Nếu mình muốn tăng SốHD lên 3 hay 4 con số (Giống như đến 999 hay 9999) thì code phải thay đổi như thế nào
Bạn lưu ý thủ tục TangSoCTu trong Module MainFunction, những phần tô đậm màu xanh.
Sub TangSoCtu()
'Tang so chung tu len: (số chứng từ có ba con số):
Dim SoHDMoi, Temp As String
With Sheets("Xuat")
Temp = Left(.[G5], Len(.[G5]) - 3)
SoHDMoi = Right("000" & Right(.[G5], 3) + 1, 3)
.[G5] = Temp & SoHDMoi
End With
End Sub

Ví dụ trên cho 3 con số, bạn tự suy ra bốn con số nhé.
 
Upvote 0
Bạn cho mình hỏi xíu, cty mình bán hàng thường xuyên thay đổi giá, bạn hướng dẫn mình cách làm file sao cho mình nhập giá mới trong excel có thể update giá mới link với file bán hàng, đồng thời nó cũng link với file báo giá cho khách hàng (Quotation) và khi chọn một sản phẩm nào nó sẽ thể hiện một list giá của sản phẩm đó và thời gian thay đổi. Cảm ơn
 
Upvote 0
Bạn cho mình hỏi xíu, cty mình bán hàng thường xuyên thay đổi giá, bạn hướng dẫn mình cách làm file sao cho mình nhập giá mới trong excel có thể update giá mới link với file bán hàng, đồng thời nó cũng link với file báo giá cho khách hàng (Quotation) và khi chọn một sản phẩm nào nó sẽ thể hiện một list giá của sản phẩm đó và thời gian thay đổi. Cảm ơn

Bạn gửi File của bạn lên mình xem thử cấu trúc dữ liệu của bạn xem!
 
Upvote 0
Lâu quá không post bài lên, giờ quên cách đứa file lên rồi , đừng cười mình nha
 
Upvote 0
[Sao mình lick "tải file từ máy" mà không link được, chỉ mình với
 
Upvote 0
Web KT

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

Back
Top Bottom