Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng

Tiêu đề: Nhờ lập trình VBA excel tạo bảng thu thập số liệu và in ra. [In trang]

Tác giả: fclinux    Thời gian: 16/4/2014 07:09
Tiêu đề: Nhờ lập trình VBA excel tạo bảng thu thập số liệu và in ra.
Trước hết em xin lỗi vì mới học VBA được mấy bài mà đã đăng bài này lên để nhờ admin và các anh chị có kinh nghiệm về VBA giúp đỡ, ngoài ra em xin nói thêm bạn nào mới học nếu chưa làm quen qua VBA thì vui lòng đừng tham khảo có thể sẽ làm các bạn gián đoạn chương trình học VBA hiện tại trên Web.
Vấn đề của em như sau, hiện e cần tạo 1 file nhập dữ liệu, cho việc nhập vào và xuất dữ liệu ra từ máy in. đây là file của em [attach]7701[/attach]

Hiện trên file có 3 sheet:
+ Sheet 1 data store: là file để lưu dữ liệu cho 2 sheet còn lại, nó lưu trữ tất cả những gì của hai sheet còn lại dựa vào số "SAP"
+ Sheet 2 tạo thẻ: ở sheet này nhân viên chỉ cần nhập đầy đủ dữ liệu yêu cầu, quan trọng là số "SAP", khi nhấn nút in ra kế bên form nhập, VBA sẽ kiểm tra dữ liệu về số "SAP" mới ghi lên form có trùng với dữ liệu đang tồn tại ở sheet "data store" không, nếu chưa có thì cho phép ghi vào dòng cuối trong danh sách của sheet "data store" và đồng thời in ra ( vùng này bên phải của sheet tạo thẻ). nếu đã có thì chỉ thông báo sai và yêu cầu kiểm tra lại.
+ Sheet 3 đóng thẻ: tạo thẻ và hoàn tất công việc, nhân viên cần đóng thẻ để ghi nhận những thông tin của đợt bảo trì vừa qua, mọi dữ liệu yêu cầu được nhập vào, khi nhấn nút in ra thì số "SAP" sẽ được kiểm tra lần nữa, nhưng lần này tìm nếu có số trùng đã tồn tại ở Sheet "Data store" thì mới cho phép ghi và ghi vào phần còn lại của sheet "Data store" ngay dòng số SAP đã được lưu trước đó (khi tạo thẻ), đồng thời cho phép in ra ở vùng bên phải trong sheet đóng thẻ.

Chúc các anh chị xaydung360.vn một ngày mới vui vẻ!








Tác giả: fubi    Thời gian: 16/4/2014 10:40
Tối nay mình thức mình làm
Vấn đề đơn giản nhưng ham mới mần.
Vê Bê A (VBA) là bạn thân.
Việc gì bạn giúp (bạn VBA) khỏi cần phải lo.
Làm tay thì chậm rùa bò
VBA trợ giúp khò khò ngủ ngon.
Tác giả: fclinux    Thời gian: 24/4/2014 21:59
Hi all,

có anh chị nào bớt chút thời gian giúp em bài này được không
Tác giả: tranhoe    Thời gian: 24/4/2014 22:57
fclinux gửi lúc 24/4/2014 21:59
Hi all,

có anh chị nào bớt chút thời gian giúp em bài này được không

Em không hiểu à!
A Fubi nói: "Chỉ cần bạn mô tả rõ:
1. Nhập liệu đầu vào gồm những gì?
2. Báo biểu in ấn kết xuất đầu ra là cái gì?
còn tiểu tiết k cần mô tả đâu
"
Em chưa trả lời thì Fubi cũng chịu thua.
Tác giả: fubi    Thời gian: 24/4/2014 23:01
fclinux gửi lúc 24/4/2014 21:59
Hi all,

có anh chị nào bớt chút thời gian giúp em bài này được không

Con nhỏ mình đang sốt. cả ngày nay mình ở nhà không đi làm. Hiện giờ vẫn phải thức canh cho con. Điện thoại chính mình tắt máy. Chỉ mở máy phụ.
Rất Mong bạn thông cảm!
Của bạn đây: [attach]7923[/attach][attach]7923[/attach]

Thân ái! Có gì bạn trao đổi thêm cho rõ nhé.



Tác giả: fclinux    Thời gian: 24/4/2014 23:13
Hic, em cảm ơn anh, nãy em có đt mà e thấy ồn em ko rõ anh nói nên e cũng không biết tình hình. rất mong anh lượng thứ!...

Cảm ơn anh rất nhiều!
Tác giả: fclinux    Thời gian: 25/4/2014 10:13
Hi anh Fubi, em sẽ post code lên để mọi người hướng dẫn em thêm, đúng là TAG close có thiếu vài trường, em sẽ mày mò thử, có gì cũng sẽ post lên để thảo luận chung , em cũng phải cố gắng hoàn tất nó trước thứ 2 vì sếp bảo giải quyết và tạo quy trình để áp dụng xuống xưởng, nó mà được hoàn thiện thì không phải đếm từng tờ giấy nữa
Tác giả: tranhungdao12a3    Thời gian: 25/4/2014 11:52
Hix! Khi nào mở lớp tiếp theo e đăng ký với nhé anh Fubi!
Tác giả: fclinux    Thời gian: 26/4/2014 13:45
Em xin post code lên đây để mọi người cũng phân tích, chắc chắn có nhiều đoạn sẽ không hiểu và cần hỗ trợ.
Code tạo thẻ:
[Visual Basic] 纯文本查看 复制代码
Sub LoadTaoThe()  
'=====Bien Du lieu The =========================================
Dim strMc As String, strSection As String, strKind As String   
Dim strDescrip As String, strReq As String   
Dim strSap As String, strSapOld As String, strSapNew As String
Dim strID As String, strRele As String  
Dim dateReque As Date, dateDead As Date
'===== Bien Chuong trinh ========================================
Dim rFind As Integer
Dim diachiFind As String
Dim rowTagO As Double
Dim ChonSave As Integer
strSapOld = Sheets("Create TAG card order").Range("C2").Value
'======= Xoa the ================================================
Sheets("Create TAG card order").Range("strMc") = vbNullString
Sheets("Create TAG card order").Range("strSection") = vbNullString
Sheets("Create TAG card order").Range("strKind").Value = vbNullString
End If
End Sub

Tác giả: fclinux    Thời gian: 27/4/2014 01:56
Thông thường muốn sử dụng thuộc tính hay phương thức nào của VBA chúng ta đều cần phải hiểu được nó hàm ý gì, dòng lệnh viết ra sao, hiện em cũng đang kẹt ở phần này, có anh chị nào rành có thể cho em biết thêm được không?

[attach]7927[/attach]
Tác giả: fclinux    Thời gian: 27/4/2014 07:45
anh Fubi, cái này làm để sử dụng luôn nên thành ra em phải nhảy cóc vậy..., e cứ đinh ninh là mình check library sẽ có detail, giờ a nói em nhớ ra rồi, có một chút thay đổi là:
+ Phần "SAP order" giờ không cần nhập nữa mà thay vào đó là một hệ thống số tự động nhảy theo số lần tạo thẻ.
+ Việc ghi đè lại dữ liệu cũ là không cho phép mà chỉ có thể tạo mới nhưng note lại lần tạo thứ bao nhiêu để khi lọc dữ liệu sẽ lấy lần đúng nhất.
+ Việc in ra sẽ không thực hiện theo máy in mặc định trên máy tính mà cụ thể và cố định một máy in nào đó. .
+ Nguyên tắc nhập dữ liệu dưới xưởng là các bạn nhân viên nhập rất vô tội vạ nên hạn chế việc tác động vào "Data store" ở mức mở thẻ và đóng thẻ.
A Fubi có thể bớt chút thời gian hướng dẫn em được không, em sẽ thay thế code cho các phần đó.
Tác giả: fclinux    Thời gian: 27/4/2014 16:17
Hi anh Fubi hiện tại code có môt vấn đề là nó không phân biệt được những số SAP đã tạo nên luôn báo tạo mới, anh có thể giúp em đổi nó thành dãy số SAP tự nhảy lên sau mỗi lần tạo thẻ ko anh, ngoài ra khóa luôn chế độ modify nội dung các thẻ đã tạo luôn.

em có khoanh vùng code mà đọc hoài ko tìm ra lý do vì sao nó không thực hiện phần counting các số old sap để chạy với điều kiện " If rowTagO > 0 Then"...
[attach]7930[/attach][attach]7929[/attach]

Tác giả: fubi    Thời gian: 27/4/2014 20:08
fclinux gửi lúc 27/4/2014 16:17
Hi anh Fubi hiện tại code có môt vấn đề là nó không phân biệt được những số SAP đ ...

TÓM LẠIl

Muốn người khác giúp mình bản thân bạn phải:
- XÁC ĐỊNH RÕ RÀNG CHÍNH XÁC + ĐẦY ĐỦ YÊU CẦU MONG MUỐN MỘT LẦN.
Không thể lúc đưa ra yêu cầu A, sau lại sửa thành yêu cầu B, rồi thêm yêu cầu C....
Vì như vậy ban đầu chỉ là quy mô nhỏ mình còn có thời gian tranh thủ giúp được, còn như bạn dần dần biến thành 1 quy mô lớn thì mình k có thời gian.

Và mình nói rất chân thành:
- Nếu bạn chưa đủ khả năng làm, mà lại là công việc của công ty thì đừng nên nhận. Hơn nữa việc này là áp dụng cho toàn công ty chứ k phải làm cho cá nhân bạn nên bạn yêu cầu công ty thuê người lập trình hoặc đặt hàng.
Khi nào bạn tự làm được thì mới nên nhận làm.

Rất mong bạn thông cảm!
Tác giả: fclinux    Thời gian: 27/4/2014 21:02
fubi gửi lúc 27/4/2014 20:08
TÓM LẠIl

Muốn người khác giúp mình bản thân bạn phải:

Hi anh, em hiểu ý của anh, việc em làm nhằm mục đích cải tiến cá nhân nên chắc hẳn không thể yêu cầu cty , em nhận được bài code của anh và đọc được rất nhiều điều mà bản thân em cho là bổ ích, em có modify lại một số đoạn để đúng hơn chút theo em (vì em ko có diễn giải cho anh), đến giây phút này em sẽ tự làm chỉ nhờ hỗ trợ một số đoạn code em không thể hoặc không rành.

Tiện đây em xin hỏi em cần một đoạn code mà đọc được số lớn nhất trong một cột, mong các anh có thể hướng dẫn thêm phần này!
Tác giả: fubi    Thời gian: 27/4/2014 21:46
fclinux gửi lúc 27/4/2014 21:02
Hi anh, em hiểu ý của anh, việc em làm nhằm mục đích cải tiến cá nhân nên chắc hẳn ...

vẬY bạn cố gắng lên nha. Tiếc rằng mình bận quá, hơn nữa yêu cầu của bạn lại k nhất quán nên k thể giúp chi tiết hơn. Còn việc giúp từng đoạn code nhỏ như yêu cầu tìm max trong 1 cột thì mình giúp được (vì quá đơn giản):

  1. Sub GetMax()
  2.     Dim lMax As Long
  3.     lMax = WorksheetFunction.Max(Range("B:B"))  ' thay cot B bang cot bat kỳ
  4. End Sub
Sao chép mã


Chúc bạn sẽ làm Ok!

Tác giả: fclinux    Thời gian: 28/4/2014 19:36
Cuối cùng em cũng hoàn tất, anh Fubi check có thấy gì thì chỉ em rút kinh nghiệm nhé
[attach]7940[/attach]




Chào mừng ghé thăm Phần mềm ôn thi sát hạch chứng chỉ hành nghề xây dựng (https://xaydung360.vn/diendan/) Powered by Discuz! X3.2