Viết dùm code cho phiếu bán lẻ!

Liên hệ QC

yome

GPE thật tuyệt vời
Tham gia
9/5/08
Bài viết
347
Được thích
113
Chào anh chị GPE! Em có file "phieu ban le" có ghi câu hỏi ở trong file. Anh chị vui lòng xem và thiết kế dùm em đoạn code nhé! Thanks
 

File đính kèm

  • phieu ban le_vd.rar
    62.2 KB · Đọc: 117
Chào anh chị GPE! Em có file "phieu ban le" có ghi câu hỏi ở trong file. Anh chị vui lòng xem và thiết kế dùm em đoạn code nhé! Thanks
Hình như file này bạn đã đưa lên rất nhiều lần rồi thì phải?
Cái này viết code không khó, chỉ dài dòng thôi
Bạn xem thử file này (chỉ là gợi ý, có thể phải sửa lại)
 

File đính kèm

  • Capnhat_Phieu_01.rar
    64.2 KB · Đọc: 193
Hình như file này bạn đã đưa lên rất nhiều lần rồi thì phải?
Cái này viết code không khó, chỉ dài dòng thôi
Bạn xem thử file này (chỉ là gợi ý, có thể phải sửa lại)
@ndundu96081631: Theo em nghĩ, Header của cùng 1 phiếu nên copy xuống cho các dòng detail luôn, lỡ họ sort dữ liệu ở sheet General là coi như toi (râu ông nọ cắm cằm bà kia)

@yome: trong file của anh ndu96081631, bạn chỉ cần chỉnh lại một chút xíu là được
PHP:
Private Sub CommandButton1_Click()
  Dim Diengiai As Range
  Set Diengiai = Range([C15], [C15].End(xlDown))
  Thongbao = MsgBox("Ban muon cap nhat du lieu moi?", vbYesNo)
  If Thongbao = vbYes Then
    With Sheet2.Range("G65536").End(xlUp).Offset(1, -6)
      .Offset(, 0).Resize(Diengiai.Rows.Count) = [D8]
      .Offset(, 1).Resize(Diengiai.Rows.Count) = Format(Now, "dd/mm/yyyy")
      .Offset(, 2).Resize(Diengiai.Rows.Count) = [G10]
      .Offset(, 3).Resize(Diengiai.Rows.Count) = [G11]
      .Offset(, 4).Resize(Diengiai.Rows.Count) = [C12]
      .Offset(, 5).Resize(Diengiai.Rows.Count) = [G12]
      .Offset(, 6).Resize(Diengiai.Rows.Count).Value = Diengiai.Value
      .Offset(, 7).Resize(Diengiai.Rows.Count).Value = Diengiai.Offset(, 1).Value
      .Offset(, 8).Resize(Diengiai.Rows.Count).Value = Diengiai.Offset(, 2).Value
      .Offset(, 9).Resize(Diengiai.Rows.Count).Value = Diengiai.Offset(, 3).Value
      .Offset(, 10).Resize(Diengiai.Rows.Count).Value = Diengiai.Offset(, 4).Value
    End With
  Else: Exit Sub
  End If
End Sub
Tuy nhiên, như anh ndu nói, file này bạn cần hoàn chỉnh nhiều, ví dụ: tự động tăng số phiếu sau khi cập nhật, kiểm tra xem số phiếu đã có hay chưa trước khi lưu để tránh tình trạng trùng phiếu, v.v......
 
Em đã down file của anh về xem nhưng sao em xóa dữ liệu ở sheet General để cập nhật lại thì dữ liệu nhảy lung tung vậy anh?
 
@ndundu96081631: Theo em nghĩ, Header của cùng 1 phiếu nên copy xuống cho các dòng detail luôn, lỡ họ sort dữ liệu ở sheet General là coi như toi (râu ông nọ cắm cằm bà kia)
.
Đồng ý chổ này...
nhưng còn đoạn
PHP:
  = Format(Now, "dd/mm/yyyy")
Lúc đầu tôi đã làm vậy, nhưng sau đó kiểm tra lại dử liệu thì thấy nó ở dạng TEXT, nên cuối cùng phải dùng cách
PHP:
.Offset(, 1) = Now: .Offset(, 1).NumberFormat = "dd/mm/yyyy"
----------------------
Em đã down file của anh về xem nhưng sao em xóa dữ liệu ở sheet General để cập nhật lại thì dữ liệu nhảy lung tung vậy anh?
Bạn nói nó nhảy lung tung, vậy bạn giữ nguyên trạng "lung tung" ấy đưa lên đây xem thử là "lung tung" như thế nào nhé
Nói thêm: Bạn viết trong phần diễn giãi thế nào cũng được, nhưng nhớ chừa ít nhất 1 dòng trống so với dòng Tổng cộng nhé (cụ thể chỉ nhập đến dòng 37, chừa dòng 38 lại)
 
Lần chỉnh sửa cuối:
anh chị sửa hẳn 1 file chuẩn cho em sử dụng với. Về VBA em kém lắm! thanks
 
PHP:
Public k As Integer
Private Sub CommandButton1_Click()
  
  k = k + 1
  Cells(8, 4).NumberFormat = "000"
  Cells(8, 4) = k
  Dim Diengiai As Range
  Set Diengiai = Range([C15], [C15].End(xlDown))
  Thongbao = MsgBox("Ban muon cap nhat du lieu moi?", vbYesNo)
  If Thongbao = vbYes Then
    With Sheet2.Range("G65536").End(xlUp).Offset(1, -6)
      .Offset(, 0) = [D8]
      .Offset(, 1) = Now: .Offset(, 1).NumberFormat = "dd/mm/yyyy"
      .Offset(, 2) = [G10]
      .Offset(, 3) = [G11]
      .Offset(, 4) = [C12]
      .Offset(, 5) = [G12]
      .Offset(, 6).Resize(Diengiai.Rows.Count, 5).Value = Diengiai.Resize(Diengiai.Rows.Count, 5).Value
         End With
  Else: Exit Sub
  End If
End Sub
Em xin phép rút ngắn một chút và viết giúp bạn ý cập nhật số phiếu tăng sau mỗi lần click

Không biết có sai không???

Các Anh chỉ thêm cho nhé
 

File đính kèm

  • Capnhat_Phieu_01.7z
    62.9 KB · Đọc: 137
Lần chỉnh sửa cuối:
PHP:
Public k As Integer
Private Sub CommandButton1_Click()
  
  k = k + 1
  Cells(8, 4).NumberFormat = "000"
  Cells(8, 4) = k
  Dim Diengiai As Range
  Set Diengiai = Range([C15], [C15].End(xlDown))
  Thongbao = MsgBox("Ban muon cap nhat du lieu moi?", vbYesNo)
  If Thongbao = vbYes Then
    With Sheet2.Range("G65536").End(xlUp).Offset(1, -6)
      .Offset(, 0) = [D8]
      .Offset(, 1) = Now: .Offset(, 1).NumberFormat = "dd/mm/yyyy"
      .Offset(, 2) = [G10]
      .Offset(, 3) = [G11]
      .Offset(, 4) = [C12]
      .Offset(, 5) = [G12]
      .Offset(, 6).Resize(Diengiai.Rows.Count, 5).Value = Diengiai.Resize(Diengiai.Rows.Count, 5).Value
         End With
  Else: Exit Sub
  End If
End Sub
Em xin phép rút ngắn một chút và viết giúp bạn ý cập nhật số phiếu tăng sau mỗi lần click

Không biết có sai không???

Các Anh chỉ thêm cho nhé
OK, về phần rút gọn thì hoàn toàn ổn
Chỉ có số phiếu thì không biết người ta sẽ nhập theo hình thức như thế nào ---> Chưa chắc số phiếu là số tự nhiên ---> Thêm nữa, muốn tự động phần số phiếu này thật sự không đơn giãn, vì code phải có khả năng nhớ được giá trị ngay cả khi đóng file rồi mở lại lần nữa
Chúng ta đang có cell D4 chứa số phiếu hiện hành ---> sao không dùng nó để "nhớ" ---> Cần gì biến k
???
Ví dụ:
PHP:
  With Cells(8, 4)
    .NumberFormat = "000"
    .Value = .Value + 1
  End With
Đóng file rồi, lần sau mở lại nó vẩn được cập nhật
Nhưng.. như tôi đã nói ở trên <--- phải xem số phiếu này là thế nào đã (biết đâu nó không phải là SỐ)
Nói chung phần này cũng không mấy quan trọng ... tôi chỉ thú vị ở chổ bạn đã tinh mắt phát hiện ra được đoạn: .Resize(Diengiai.Rows.Count, 5) ---> Xem ra đã rất tiến bộ đấy chứ ---> Chúc bạn càng tiến bộ hơn nữa trong tương lai ---> Gán bó nhiều hơn với Excel nói chung và GPE nói riêng
 
A/C nud96081631 ơi! Em dùng thử codeA/C rồi nhưng sao số phiếu xóa đi để nhập số phiếu khác sao không được? Mà nó cứ tăng lên theo mặc định vậy? Xin chidùm em?
 
Cám ơn các bạn nhé.
Tôi đã xem bài viết trả lời và đã thử nghiệm ứng dụng thấy rất hay.
Nhưng tôi còn chưa biết cách tạo ra Nút lệnh " Cập Nhật " trên bảng tính Phiếu như thế nào ?

Mong Hồi âm của các bác - Hướng dẫn chỉ giúp
Chân thành cám ơn./.
 
Cám ơn các bạn nhé.
Tôi đã xem bài viết trả lời và đã thử nghiệm ứng dụng thấy rất hay.
Nhưng tôi còn chưa biết cách tạo ra Nút lệnh " Cập Nhật " trên bảng tính Phiếu như thế nào ?

Mong Hồi âm của các bác - Hướng dẫn chỉ giúp
Chân thành cám ơn./.
- Click phải vào thanh Toolbars, chọn Control Toolbox (hoặc vào menu View\Toolbars và check vào mục Control Toolbox)
- Trên thanh công cụ mới này, nhấp chọn vào nút mang tên Command Button rồi "vẽ" ra bảng tính
- Sau khi vẽ xong, muốn viết code cho nó thì lại click phải vào nó, chọn View code ---> Bạn sẽ thấy 1 cửa số hiện ra có sẳn đoạn:
PHP:
Private Sub CommandButton1_Click()

End Sub
- Viết code gì đó vào giữa đoạn code trên (viết gì là tùy bạn)
- Sau khi hoàn tất việc viết code, đóng cửa sổ này để trở lại trang tính Excel ---> Nhấp chọn vào nút mang tên Exit Design Mode (nút có hình thước Ê ke)
- Giờ thì nhấp vào nút để chạy code
- Nếu code bạn viết ngon lành thì... vèo.. vèo... tất cả sẽ được thực thi đúng ý đồ của bạn ---> Bằng ngược lại, 1 khung báo lỗi hiên ra thì... bấm OK và vào sửa tiếp ---> Đến khi nào "ăn tiền" thì thôi
 
Web KT
Back
Top Bottom