Nhờ sửa giúp form nhập liệu

Liên hệ QC

thuanduc08

Thành viên hoạt động
Tham gia
19/4/09
Bài viết
146
Được thích
29
Nghề nghiệp
Tôi là giáo viên trường tiểu học,công việc hiện tạ
Chào các bạn trên diễn đàn

Tôi có một form nhập liệu hồ sơ phổ cập theo độ tuổi, tôi muốn nhờ diễn đàn sửa giúp tôi
- Khi nhập đến độ tuổi nào thì tự động chuyển vào sheet của độ tuổi đó.
- Nếu ở độ tuổi mới mà chưa có sheet tương ứng với độ tuổi nhập thì tự động tạo
- Các sheet được tạo gồm cả tên tiêu đề.

Rất mong diễn đàn giúp đỡ.
Xin chân thành cảm ơn.
 

File đính kèm

Xin mời xem thử cái ni

PHP:
Option Explicit
Private Sub Ok_Click()
 Dim iRow As Long:            Dim WS As Worksheet
 
 If TextBox2 = "" Or TextBox3 = "" Or TextBox5 = "" Then
   MsgBox "Ban Chua Nhap Du Thong Tin; Vui lòng Nhap Tiép!", , "GPE XIN THONG BÁO!"
   Exit Sub
 End If
 For Each WS In Worksheets
   If WS.Name = "N" & Right(Me.TextBox3.Value, 2) Then
      iRow = 1:                     Exit For
   End If
 Next WS
 If iRow < 1 Then
   MsgBox "Vui Lòng Tao Trang Tính Mói Cho Em Này!":        Exit Sub
 Else
   Set WS = Sheets("N" & Right(Me.TextBox3.Value, 2))
   'Copy The Data To The Database         '
   With WS.[b65500].End(xlUp).Offset(1)
      If .Row = 4 Then .Value = 1 Else .Value = .Offset(-1).Value + 1
      
      .Offset(, 1).Value = Me.TextBox2.Value:      .Offset(, 9).Value = Me.TextBox10.Value
      .Offset(, 2).Value = Me.TextBox3.Value  'Nam Sinh'
      .Offset(, 2).NumberFormat = "dd/MM/yyyy"
      .Offset(, 3).Value = Me.TextBox4.Value:      .Offset(, 4).Value = Me.TextBox5.Value
      .Offset(, 5).Value = Me.TextBox6.Value:      .Offset(, 6).Value = Me.TextBox7.Value
      .Offset(, 7).Value = Me.TextBox8.Value:      .Offset(, 8).Value = Me.TextBox9.Value
      .Offset(, 10).Value = Me.TextBox11.Value
      .Offset(, 11).Value = Me.TextBox12.Value
   End With
'Clear The Data            '
   TextBox1 = "9":                                 TextBox2 = ""
   TextBox3 = "":                                  TextBox4 = ""
   TextBox5 = "":                                  TextBox6 = "?"
   TextBox7 = "?":                                 TextBox8 = "0"
   TextBox9 = "0":                                 TextBox10 = "0"
   TextBox11 = "0":                                TextBox12 = ""
   Me.TextBox1.SetFocus
 End If
End Sub

Một số chú í khi xài:

(*) Việc tạo trang tính mới theo năm sinh bạn nên tự làm lấy bằng bàn tay & khối óc của mình!

(*) Vế ố TT macro sẽ từ tìm số thího75o75p để cập nhật; TextBox STT coi như để chơi thôi.
Một số TextBox đã cài mặc định; Bạn nên sửa lại mặc định theo í mình.

Để cho đẹp hơn chút (theo mình) nên để 2 textBox ngằn như 'Chuyển đến' & 'Chuyển đi' cùng hàng (, như rứa với 2 TextBox dưới liền kề)

(*) Nhập ngày thàng sinh theo hệ bọn Mẽo & mình cài định dạng rồi
Việc này bỡi lẽ bạn nhập từ form & sẽ gần với việc sử dụng VBA nên thế. Nếu không thích vậy thì bạn sửa theo í mình!


Chúc ngày làm việc vui vẻ & kết quả!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn anh SA_DQ rất nhiều
 
Upvote 0
PHP:
   'Copy The Data To The Database         '
   With WS.[b65500].End(xlUp).Offset(1)
      If .Row = 4 Then .Value = 1 Else .Value = .Offset(-1).Value + 1
      
      .Offset(, 1).Value = Me.TextBox2.Value:      .Offset(, 9).Value = Me.TextBox10.Value
      .Offset(, 2).Value = Me.TextBox3.Value  'Nam Sinh'
      .Offset(, 2).NumberFormat = "dd/MM/yyyy"
      .Offset(, 3).Value = Me.TextBox4.Value:      .Offset(, 4).Value = Me.TextBox5.Value
      .Offset(, 5).Value = Me.TextBox6.Value:      .Offset(, 6).Value = Me.TextBox7.Value
      .Offset(, 7).Value = Me.TextBox8.Value:      .Offset(, 8).Value = Me.TextBox9.Value
      .Offset(, 10).Value = Me.TextBox11.Value
      .Offset(, 11).Value = Me.TextBox12.Value
   End With
 End If
1/ Theo em nghĩ bài này không nên cập nhật theo hướng này, nên là cập nhật vào 1 sh Data, còn các sh theo NS là phần tạo báo cáo. Nhằm giúp công việc sửa chữa tiện lợi hơn, và truy xuất lại data.
2/ Đoạn code trên theo em nên viết lại cho ngắn.
PHP:
With WS.[b65500].End(xlUp).Offset(1)
      If .Row = 4 Then .Value = 1 Else .Value = .Offset(-1).Value + 1
       .Offset(, 2).NumberFormat = "dd/MM/yyyy"
       For i = 1 To 11
        .Offset(, i).Value = Me.Controls.Item("TextBox" & i + 1)
       Next i
Vài lời tham gia, Bác Sa đừng ...
Xin cám ơn.
http://www.giaiphapexcel.com/forum/...-code-tìm-kiếm-trong-form&p=264033#post264033
File này Bác Sealand làm cho VanThanhPhong gần giống yêu cầu và rất hoàn chỉnh. Bạn thuanduc có thể tham khảo.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình thấy Form dạng nhiều điều khiển thế này code nên viết (Mình khống chế độ tuổi từ 1 đến 12)
Mã:
Function Sh_exist(ByVal Tuoi As String) As Boolean
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
If Sh.Name = Tuoi Then
Sh_exist = True
Exit Function
End If
Next
End Function
'================================================
Private Sub Cancle_Click()
Unload Me
End Sub
'============================================================
Private Sub Ok_Click()
Dim iRow As Long, j, Nsinh
Dim ws As Worksheet
For j = 1 To 11
If Me.Controls("Textbox" & j) = "" Then
MsgBox "Ban chua nhap day du thong tin. Vui long nhap tiep!", , "THONG BAO !"
Exit Sub
Me.Controls("Textbox" & i).SetFocus
End If
Next
Nsinh = Right(Trim(TextBox3), 4)
If Nsinh < Year(Date) Or Nsinh > Year(Date) - 13 Then
If Sh_exist(Nsinh) Then
Set ws = Worksheets(Nsinh)
Else
Set ws = Worksheets.Add
ws.Name = Nsinh
Sheet1.Cells.Copy ws.[a1]
End If
iRow = ws.[a65536].End(xlUp).Row + 1
For j = 1 To 12
ws.Cells(iRow, j) = Me.Controls("Textbox" & j)
Me.Controls("Textbox" & j) = ""
Next
Me.TextBox1.SetFocus
Set ws = Nothing
Exit Sub
End If
Thoat:
MsgBox "Ngay sinh nhap dang dd/mm/yyyy"
Me.TextBox3.SetFocus
End Sub

Mình viết nội dung cơ bản bạn tham khảo và bổ xung nha
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
- Ngày sinh mà dùng TextBox để nhập là... THUA --> Sẽ có ngày nó chẳng tính ra được giống gì ---> Dùng Calendar
- Mấy chổ: CHUYỂN ĐẾN, CHUYỂN ĐI, LƯU BAN, CHẾT ta dùng Checkbox có phải gọn hơn không
 
Upvote 0
Cảm ơn Sa_DQ, Thunghi, Sealand và bác Ndu đã quan tâm bài của e. Đây là lần đầu tiên tạo form nhập liệu, e đang mò mẫm học nên còn nhiều chỗ chưa biết. Rất cảm ơn mọi người đã giúp đỡ.
Góp ý của bác Ndu rất tuyệt e muốn dùng chexbox để lựa chọn chuyển đến, chuyển đi nhưng chưa làm được.
Nhờ các bác giúp em trong phần chuyển đến gồm: TH( trong huyện), HN( huyện ngoài), TN ( tỉnh ngoài) và chuyển đi cũng tương tự như thế, em không gửi được file đính kèm nên các bác thông cảm, nhờ các bác sửa giúp.
Thank all.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom