namkhanh.dangtran
Thành viên mới
![](/diendan/data/PhoToDanhHieu/gold.gif)
- Tham gia
- 5/3/11
- Bài viết
- 17
- Được thích
- 8
Có 1 vấn đề mà bạn mở 2 topic khác nhau, tôi đã gom cả 2 vào đây và chỉ link cho bạn xem các form mẫu bài trên, bạn lại mở topic thứ 3.Chào các bạn!
Mình nhờ các bạn hoàn thiện dùm form này nhé:
Thì trên sheet đang có sẳn nhiều cột nhiều dòng đấy, nhập trực tiếp vào luôn đi. Form trong trường hợp này là vô íchMình có file 1 này muốn hỏi các bạn: Có cách nào mình có thể tạo các ô trên Form để có thể nhập liệu cùng một lúc?
ngocdak đã viết:Mình có file 1 này muốn hỏi các bạn: Có cách nào mình có thể tạo các ô trên Form để có thể nhập liệu cùng một lúc?
Có 1 lỗi nhỏ trong form này sư phụ à! Đó là nếu mở form mà không làm gì cả, bấm nút Thoát nó cũng... "cằn nhằn"Tôi tạo 1 form nhập liệu với code sơ đẳng nhất:
- Dùng CountIf chống nhập trùng
- Dùng For next
- Ghi từng giá trị xuống từng cell
- Xoá từng textbox sau khi ghi
Cũng có khi là "nhiều" người nhưng cùng thầyViệc nhận xét nick này rất đơn giản, đọc sơ qua nội dung bài, đọc giọng văn, nhìn sơ qua file là biết ai là tác giả và có thể kết luận nick của ai.
Có 1 lỗi nhỏ trong form này sư phụ à! Đó là nếu mở form mà không làm gì cả, bấm nút Thoát nó cũng... "cằn nhằn"
Tính luôn cả những từ ngữ thường dùng trong câu và cách đặt câu, tính luôn phong cách hỏi "cơm" không nhận "gạo" và không chịu đọc link gợi ý, tính luôn cả thói quen đặt tên file, tính luôn thói quen "Pro" hiện form là dấu Application, ... thì có thể chắc 100% là 1 người.Cũng có khi là "nhiều" người nhưng cùng thầy
Ẹc... ẹc...
Theo giao diện mà bạn vừa đưa lên, tôi sửa lại, dùng SpreadSheet sẽ giúp ta đơn giản hóa code rất nhiều:
View attachment 60914
Với giao diện trên thì code chỉ cần vầy là đủ:
PHP:Private Sub CommandButton1_Click() Dim sRng As Range Set sRng = Sheet1.Range("A65536").End(xlUp).Offset(1) With Me.Spreadsheet1.Range("A1").CurrentRegion If .Count > 1 Then sRng.Offset(, 0).Resize(.Rows.Count, 1).Value = SoPhieu.Text sRng.Offset(, 1).Resize(.Rows.Count, 1).Value = Ngay.Value sRng.Offset(, 2).Resize(.Rows.Count, 5).Value = .Value End If End With End Sub
Đương nhiên bạn vẫn có thể cải tiến thế nào đó tùy ý, chẳng hạn để khống chế nhập trùng, bạn dùng sự kiện Spreadsheet1_SheetChange tại cột A, bằng cách dùng hàm COUNTIF hoặc dùng Dictionary ObjectPHP:Private Sub Spreadsheet1_SheetChange(ByVal Sh As OWC11.Worksheet, ByVal Target As OWC11.Range) On Error GoTo ExitSub If Sh.Name = "Sheet1" Then If Target.Column = 3 Or Target.Column = 4 Then Sh.Cells(Target.Row, 5) = Sh.Cells(Target.Row, 3) * Sh.Cells(Target.Row, 4) End If End If ExitSub: End Sub
------------------------
Nói ngoài lề: Tôi cũng giống ý kiến viethoai và Lê Duy Thương, tôi chỉ dùng Form khi tôi cảm nhận được sự cần thiết đến mức không thể nhập trực tiếp được... Nói thật, với form này, tôi chẳng thấy sự cần thiết của Form nó nằm ở chổ nào nữa (dợt code chơi cho vui thì chẳng nói làm gì) ---> Còn nếu làm form chỉ đê cho nó.. PRO hơn thì thôi... miễn đi
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2