hỏi đáp userform nhập liệu

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Trần Mạnh Quyền

Thành viên mới
Tham gia
2/2/23
Bài viết
10
Được thích
0
Dạ em chào các anh chị . Em có 1 userform nhập liệu với các trường thông tin cơ bản như bên dưới. Hiện tại thì mỗi lần em muốn thêm 1 tên của 1 người thì em phải click vô nút "thêm" ở ô H2 ( lúc đó userform mới hiện lên và nhập xong 1 tên thì lại phải tiếp tục ấn vào nút thêm ở ô H2 để thêm tên tiếp theo).Em muốn hỏi là : Có cách nào để sau khi em click chuột vào nút thêm ở ô H2 thì khi userform hiện nên em có thể ấn vào button "thêm giá trị " trong userform để thêm những người tiếp theo được không ạ? File em có đính kèm ở link bên dưới. Em xin cảm ơn sự hảo tâm giúp đỡ của mọi người, e đã nghĩ cả ngày không ra ạ .
1677494159129.png
 
Thêm dòng inumberRow = Data.Range("A" & Rows.Count).End(xlUp).Row + 1 vào cuối Sub saveData() trong code của frmMain
 
Upvote 0
Các nút thêm, sửa, xóa bạn dùng cùng 1 form nên nếu sửa theo mong muốn của bạn thì phải kiểm tra lại cả phần sửa và xóa nữa. Bạn cần sửa lại sub saveData. Theo mình cần thêm 1 biến để xác định khi nào thêm, khi nào bạn sửa.
Bài đã được tự động gộp:

Thêm dòng inumberRow = Data.Range("A" & Rows.Count).End(xlUp).Row + 1 vào cuối Sub saveData() trong code của frmMain
Với code này thì khi bấm nút Sửa, code sẽ chạy không đúng, nó sẽ ghi xuống dòng cuối chứ không phải sửa bạn a.
 
Upvote 0
Thêm dòng inumberRow = Data.Range("A" & Rows.Count).End(xlUp).Row + 1 vào cuối Sub saveData() trong code của frmMain
đỉnh luôn a ơi, nó đã hoạt động a ạ. Nhưng có vấn đề thế này: Mặc dù đã thêm được người mới nhưng phần trình độ học vấn nó bị sai thông tin. Ví dụ khi e click chọn checkbox trình độ PTTH và Tiến Sỹ thì trên bảng tính excel nó sẽ hiện: PTTH, Tien Sy, Dai hoc ... tức nó bị thừa thông tin. A có thể hỗ trợ e phần đó thêm được không. Rất cảm ơn a nhiều ạ!
Bài đã được tự động gộp:

đỉnh luôn a ơi, nó đã hoạt động a ạ. Nhưng có vấn đề thế này: Mặc dù đã thêm được người mới nhưng phần trình độ học vấn nó bị sai thông tin. Ví dụ khi e click chọn checkbox trình độ PTTH và Tiến Sỹ thì trên bảng tính excel nó sẽ hiện: PTTH, Tien Sy, Dai hoc ... tức nó bị thừa thông tin. A có thể hỗ trợ e phần đó thêm được không. Rất cảm ơn a nhiều ạ!
Các nút thêm, sửa, xóa bạn dùng cùng 1 form nên nếu sửa theo mong muốn của bạn thì phải kiểm tra lại cả phần sửa và xóa nữa. Bạn cần sửa lại sub saveData. Theo mình cần thêm 1 biến để xác định khi nào thêm, khi nào bạn sửa.
Bài đã được tự động gộp:


Với code này thì khi bấm nút Sửa, code sẽ chạy không đúng, nó sẽ ghi xuống dòng cuối chứ không phải sửa bạn a.
dạ đúng r a
Bài đã được tự động gộp:

Các nút thêm, sửa, xóa bạn dùng cùng 1 form nên nếu sửa theo mong muốn của bạn thì phải kiểm tra lại cả phần sửa và xóa nữa. Bạn cần sửa lại sub saveData. Theo mình cần thêm 1 biến để xác định khi nào thêm, khi nào bạn sửa.
Bài đã được tự động gộp:


Với code này thì khi bấm nút Sửa, code sẽ chạy không đúng, nó sẽ ghi xuống dòng cuối chứ không phải sửa bạn a.
dạ e đã thêm 1 biến strMode ở sub "showformtoDat" và có đặt điều kiện bằng hàm if ở sub "saveData" nhưng ko hiểu sao nó vẫn ko hoạt động. E mới học ko sành lắm , mong a hỗ trợ thêm. Cảm ơn a nhiều ạ
 
Lần chỉnh sửa cuối:
Upvote 0
đỉnh luôn a ơi, nó đã hoạt động a ạ. Nhưng có vấn đề thế này: Mặc dù đã thêm được người mới nhưng phần trình độ học vấn nó bị sai thông tin. Ví dụ khi e click chọn checkbox trình độ PTTH và Tiến Sỹ thì trên bảng tính excel nó sẽ hiện: PTTH, Tien Sy, Dai hoc ... tức nó bị thừa thông tin. A có thể hỗ trợ e phần đó thêm được không. Rất cảm ơn a nhiều ạ!
Tôi trả lời để bạn có điểm tựa để nghiên cứu chứ chẳng lẽ bạn dùng file này thiệt à? Có mấy dòng như thế thà nhập thẳng trên sheet cho nhanh.
Bài đã được tự động gộp:

Các nút thêm, sửa, xóa bạn dùng cùng 1 form nên nếu sửa theo mong muốn của bạn thì phải kiểm tra lại cả phần sửa và xóa nữa. Bạn cần sửa lại sub saveData. Theo mình cần thêm 1 biến để xác định khi nào thêm, khi nào bạn sửa.
Bài đã được tự động gộp:


Với code này thì khi bấm nút Sửa, code sẽ chạy không đúng, nó sẽ ghi xuống dòng cuối chứ không phải sửa bạn a.
Không phải. Muốn sửa thì trên sheet phải bấm vào dòng cần sửa, form sẽ hiện thông tin đang có. Bấm save thì nó sẽ lưu đúng dòng đã chọn.
 
Upvote 0
Tôi trả lời để bạn có điểm tựa để nghiên cứu chứ chẳng lẽ bạn dùng file này thiệt à? Có mấy dòng như thế thà nhập thẳng trên sheet cho nhanh.
dạ xin lỗi a vì sự kém cỏi này và làm a ko vui. Mục đích e làm file này là để thực hành vba ạ và e muốn sửa file này để hiểu hơn về code.
 
Upvote 0
dạ xin lỗi a vì sự kém cỏi này và làm a ko vui. Mục đích e làm file này là để thực hành vba ạ và e muốn sửa file này để hiểu hơn về code.
Làm gì có thừa thông tin như bạn nói. Check cái nào thì nó sẽ thêm cái ấy. Muốn không ghi cái đại học thì bạn phải tự tay bấm bỏ check vì đó cái checkbox đặt mặc định.
 
Upvote 0
Làm gì có thừa thông tin như bạn nói. Check cái nào thì nó sẽ thêm cái ấy. Muốn không ghi cái đại học thì bạn phải tự tay bấm bỏ check vì đó cái checkbox đặt mặc định.
mặc dù e đã bỏ check nhưng nó vẫn bị thừa a ạ, e đã thử nhiều lần và có thêm inumber row vào cuối sub savedata trong frmMain như a nói ạ
 
Upvote 0
Bạn sửa 3 subs này

Mã:
Public isnewedit As Integer '1 new, 2 edit
Sub addData()
isnewedit = 1
frmMain.resetData
frmMain.Show

End Sub
Sub editData()
isnewedit = 2
frmMain.showformtoUpdate ActiveCell.Row
frmMain.resetData
End Sub

Sub saveData()
If isnewedit = 1 Then
inumberRow = Data.Range("A" & Rows.Count).End(xlUp).Row + 1
End If

    With Data
        .Range("A" & inumberRow).Value = strHoten
        .Range("B" & inumberRow).Value = strQuequan
        .Range("C" & inumberRow).Value = strGioitinh
        .Range("D" & inumberRow).Value = strHonnhan
        .Range("E" & inumberRow).Value = strHocvan
        .Range("F" & inumberRow).Value = strNgaysinh
    End With

End Sub
 
Upvote 0
Bạn sửa 3 subs này

Mã:
Public isnewedit As Integer '1 new, 2 edit
Sub addData()
isnewedit = 1
frmMain.resetData
frmMain.Show

End Sub
Sub editData()
isnewedit = 2
frmMain.showformtoUpdate ActiveCell.Row
frmMain.resetData
End Sub

Sub saveData()
If isnewedit = 1 Then
inumberRow = Data.Range("A" & Rows.Count).End(xlUp).Row + 1
End If

    With Data
        .Range("A" & inumberRow).Value = strHoten
        .Range("B" & inumberRow).Value = strQuequan
        .Range("C" & inumberRow).Value = strGioitinh
        .Range("D" & inumberRow).Value = strHonnhan
        .Range("E" & inumberRow).Value = strHocvan
        .Range("F" & inumberRow).Value = strNgaysinh
    End With

End Sub
cảm ơn a rất nhiều, form đã hoạt động như ý ạ
 
Upvote 0
@ Chủ bài đăng: Loại CSDL nào cũng cần có Mã (duy nhất) cho chúng;
Mình lấy ví dụ:
Họ & Tên
TTT00Trần Thị Thanh
NTN00Nguyễn Thị Nga
TBH00Trần Thị Bảo Hân
THF00Từ Hứa Đông
FHD00Đỗ Hùng Dũng
FJD00Đặng Dung
NTN01Ngô Thanh Ngân

Có vậy thì vận hành CSDL sẽ lâu dài & tri kỹ với bạn; bằng ngược lại nó sẽ là đống rác & sớm thôi.

Chú í nhỏ: Cần viết hoa họ tên các nhân viên ví dụ; Điều này chứng tỏ bạn tôn trọng cộng đồng này!
 
Upvote 0
@ Chủ bài đăng: Loại CSDL nào cũng cần có Mã (duy nhất) cho chúng;
Mình lấy ví dụ:
Họ & Tên
TTT00Trần Thị Thanh
NTN00Nguyễn Thị Nga
TBH00Trần Thị Bảo Hân
THF00Từ Hứa Đông
FHD00Đỗ Hùng Dũng
FJD00Đặng Dung
NTN01Ngô Thanh Ngân

Có vậy thì vận hành CSDL sẽ lâu dài & tri kỹ với bạn; bằng ngược lại nó sẽ là đống rác & sớm thôi.

Chú í nhỏ: Cần viết hoa họ tên các nhân viên ví dụ; Điều này chứng tỏ bạn tôn trọng cộng đồng này!
cảm ơn a đã đóng góp ý kiến, e xin ghi nhận và tiếp thu. File này e làm ra để thực hành , khi nào vào việc chính thức e sẽ lưu ý nhưng gì a đã đóng góp ạ
 
Upvote 0
Tôi trả lời để bạn có điểm tựa để nghiên cứu chứ chẳng lẽ bạn dùng file này thiệt à? Có mấy dòng như thế thà nhập thẳng trên sheet cho nhanh.
,,,
Không phải. Muốn sửa thì trên sheet phải bấm vào dòng cần sửa, form sẽ hiện thông tin đang có. Bấm save thì nó sẽ lưu đúng dòng đã chọn.
Trên nguyên tắc, người viết code muốn cho người dùng thoải mái về chỉnh sửa code thì:
1.Họ đã viết rất dễ chỉnh sửa. Nhưng cái này thuộc về người có nhiều căn bản về lý thuyết lập trình.
2. Họ có chỉ đãn những chỗ có thể sửa chữa.
3. Nếu không nằm trong 2 điều trên thì mọi việc chỉnh sửa rất dễ bị "phá code". Chỉ dùng cho những tay chuyên "mì ăn liền"

Thớt có nói là "do muốn học code". Nhưng học kiểu lụm mấy cái code này là chọn đầu đề lộn ngược hết rồi.
Mì ăn liền chỉ có thể thêm tôm thêm trứng. Nhưng muốn một tô chiết thành hai tô thì cần chef thứ thiệt chứ tay ngang rớ vào là lỏng mì tanh nước ngay.

Từ đầu tôi cũng không có ý giấu nước đi. Nhưng tính tôi không thích nói chuyện với người hay viết tắt nên tôi thôi.
 
Upvote 0
Trên nguyên tắc, người viết code muốn cho người dùng thoải mái về chỉnh sửa code thì:
1.Họ đã viết rất dễ chỉnh sửa. Nhưng cái này thuộc về người có nhiều căn bản về lý thuyết lập trình.
2. Họ có chỉ đãn những chỗ có thể sửa chữa.
3. Nếu không nằm trong 2 điều trên thì mọi việc chỉnh sửa rất dễ bị "phá code". Chỉ dùng cho những tay chuyên "mì ăn liền"

Thớt có nói là "do muốn học code". Nhưng học kiểu lụm mấy cái code này là chọn đầu đề lộn ngược hết rồi.
Mì ăn liền chỉ có thể thêm tôm thêm trứng. Nhưng muốn một tô chiết thành hai tô thì cần chef thứ thiệt chứ tay ngang rớ vào là lỏng mì tanh nước ngay.

Từ đầu tôi cũng không có ý giấu nước đi. Nhưng tính tôi không thích nói chuyện với người hay viết tắt nên tôi thôi.
cảm ơn bạn
Trên nguyên tắc, người viết code muốn cho người dùng thoải mái về chỉnh sửa code thì:
1.Họ đã viết rất dễ chỉnh sửa. Nhưng cái này thuộc về người có nhiều căn bản về lý thuyết lập trình.
2. Họ có chỉ đãn những chỗ có thể sửa chữa.
3. Nếu không nằm trong 2 điều trên thì mọi việc chỉnh sửa rất dễ bị "phá code". Chỉ dùng cho những tay chuyên "mì ăn liền"

Thớt có nói là "do muốn học code". Nhưng học kiểu lụm mấy cái code này là chọn đầu đề lộn ngược hết rồi.
Mì ăn liền chỉ có thể thêm tôm thêm trứng. Nhưng muốn một tô chiết thành hai tô thì cần chef thứ thiệt chứ tay ngang rớ vào là lỏng mì tanh nước ngay.

Từ đầu tôi cũng không có ý giấu nước đi. Nhưng tính tôi không thích nói chuyện với người hay viết tắt nên tôi thôi.
cảm ơn bạn
 
Upvote 0
Web KT

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

Back
Top Bottom