Nhập và sửa dữ liệu bảng tính thông qua Form

Liên hệ QC

duyangels

Thành viên mới
Tham gia
7/2/10
Bài viết
49
Được thích
9
Nhờ các Bác hướng dẫn giúp làm code VBA trong Form nhập liệu tại Sheet NguonTTKH. Mình muốn Khi mở Form nhập liệu sẽ hiện danh sách khách hàng tại listbox danh sach khách hàng, sau đó chọn sẽ hiện các nội dung trong các Textbox bên dưới. Sau đó nếu muốn sữa thì thay đổi trong ô textbox tương ứng và click nút sữa dữ liệu là sữa được, Trường hợp thêm mới thì nhập vào textbox tương ứng và click nút thêm dữ liệu sẽ thêm vào bên dưới của bảng danh sách. Nếu file mẫu thiết kế chưa hợp lý chỗ nào các bác góp ý giúp mình, mình sẽ chỉnh sửa lại.
Chân thành cám ơn các bác trước!
 

File đính kèm

  • Quan ly cham soc khach hang.xls
    496.5 KB · Đọc: 186
như file của bạn tôi bỏ listbox đi.
- bạn muốn sửa thông tin khách hang nào thì nhập mã khách hang vào rồi click vào nút "TÌM" sẽ hiện lên thông tin của khách hang đó chó bạn sửa, khi sửa xong thì click vào nút "cập nhật" để ghi xuống sheet. Nếu nhập mới thì bạn click vào "nhập mới" để xóa thông tin trong các textbox rồi bạn nhập mới thông tin, khi xong thì click vào "ghi dữ lieu" để ghi xuống sheet.
 

File đính kèm

  • Quan ly cham soc khach hang.xls
    501 KB · Đọc: 466
Upvote 0
Ok cám ơn Bác chạy cũng khá ngon rồi bác nhưng mình đóng góp thêm ý kiến chỗ này. Sau khi tìm thấy mã khách hàng rồi sau đó nếu mình muốn nhập mới 1 khách hàng khác thì mình Click nút "Nhập mới" nó xóa trắng sau đó mình không muốn thêm nữa mà mình bấm Cập nhật tìm nó lại xóa trắng khách hàng đó. Sau khi xóa trắng thì lần sau tìm thì nó lại không tìm thấy các dữ liệu bên dưới dòng trắng đó. Mình ví dụ: Dòng khách hàng 1,2,3 số 4 là dòng trống tiếp theo là khách hàng thứ 5, thì sau khi tìm lại nó chỉ tìm trong 3 khách hàng đầu tiên thôi. Bác xem lại chỗ này giúp! Có thể hạn chế được việc này sau khi Click nút Nhập mới thì chỉ được Ghi dữ liệu ko được bấm cập nhật.
 
Upvote 0
click "cập nhật" để cập nhật sau khi sửa. click "nhập mới" sau khi tìm mà không muốn sửa mà muốn nhập khách hang mới. click "Ghi dữ lieu" để nhập vào khách hang mới
 

File đính kèm

  • Quan ly cham soc khach hang.xls
    499.5 KB · Đọc: 270
Upvote 0
cám ơn bạn diemhuyenanh, bạn giúp mình thêm tý mình muốn sau khi nhấn enter trong o mã khách hàng thì thực hiện lệnh giống nút tìm luôn cho nhanh. Với lại bạn xem giúp trường hợp ko nhớ mã khách hàng thì mình click nút xem danh mục khách hàng bên trên để xem mã tất cả các khách hàng trong listbox ở Form "MaKH" mình đã tạo sẵn, nguồn danh sách trong sheet "DataLIST". Cám ơn bạn. download file
 
Lần chỉnh sửa cuối:
Upvote 0
nhập vào mã số khách hang nhấn enter sẽ hiện lên thông tin khách hang. click "All" hiện toàn bộ danh sách khác hang, sau đó click vào khách hang bất kỳ trong listbox sẽ tự động load thông tin về khách hang đó.
 

File đính kèm

  • Quan ly khach hang 17-04-2015.xls
    502 KB · Đọc: 174
Upvote 0
Góp ý:
- Trong tìm kiếm nên sử dụng ListBox để hiện được nhiều dòng thông tin về khách hàng nào đó, hoặc thêm chức năng tìm tiếp.
 
Upvote 0
Cám ơn bạn diemhuyenanh rất nhiều, mình có cùng ý với bạn Be09, bạn thêm giúp mình các cột dữ liệu bên vào trong listbox các cột dữ của sheet DataList mình mới thêm vào. Cám ơn bạn . Download file
 
Upvote 0
Các ơn bạn hpkhuog minh nhập đoạn mã vào ok luôn, mình hỏi thêm tý nếu muốn kẻ khung listbox thì làm sao nhỉ, và nếu thêm cột tiêu đề bên trên thì làm sao để ko cho nhấn lên cột tiêu đề nhỉ, cám ơn các bạn nhiều. File đính kèm
 
Upvote 0
Nhờ các Bác kiểm tra giúp file bị lỗi gì mà ko chạy được khi chọn quản lý thông tin khách hàng --> click vào listbox để hiện dữ liệu tại các textbox. Tải file
 
Lần chỉnh sửa cuối:
Upvote 0
bạn diemhuyenanh ơi bạn có thể giải thích giúp mình ở giai doạn này ko, mình cố gắng làm đến đây thì bị lỗi rùi, bạn có thể giải thich giúp mình những đoạn code thực hiện " nhập vào mã số khách hang nhấn enter sẽ hiện lên thông tin khách hang. click "All" hiện toàn bộ danh sách khác hang, sau đó click vào khách hang bất kỳ trong listbox sẽ tự động load thông tin về khách hang đó." được ko bạn, cảm ơn ban

*********************
Private Sub CmdAll_Click()
Dim Rng(), LastRow As Long, i As Long
LastRow = Worksheets("Datalist").Range("A65536").End(xlUp).Row
Rng = Worksheets("Datalist").Range("A2:B" & LastRow).Value
With UserForm1
.LtBMakh.ColumnCount = 2
.LtBMakh.ColumnWidths = ("300,200")
.LtBMakh.List = Rng
End With
End Sub

**************************************
Private Sub CommandButton1_Click()
MaKH.Show
End Sub
***********************************

Private Sub LtBMakh_Click()
With UserForm1
If .LtBMakh.ListCount < 1 Then Exit Sub
.txtMaSo = .LtBMakh.List(.LtBMakh.ListIndex, 0)
.txtHovaten.SetFocus
End With
txtMaSo_AfterUpdate
End Sub

******************************************
Private Sub txtMaSo_AfterUpdate()
Dim Rng As Range, Cl As Range
Set Rng = Worksheets("nguonttkh").Range([B9], [B9].End(xlDown))
Set Cl = Rng.Find(UserForm1.txtMaSo, , xlValues, xlWhole)
If Not Cl Is Nothing Then
sRow = Cl.Row
With UserForm1
.txtSoTT = Cl.Offset(, -1)
.txtHovaten = Cl.Offset(, 1)
.txtTencongty = Cl.Offset(, 2)
.txtNhucau = Cl.Offset(, 3)
.txtTennguoinhan = Cl.Offset(, 4)
.txtDiaChiXH = Cl.Offset(, 5)
.txtDienThoai = Cl.Offset(, 6)
.txtNgaysinh = Format(Cl.Offset(, 8), "dd/mm/yyyy")
.txtEmail = Cl.Offset(, 7)
.txtGHICHU = Cl.Offset(, 9)
.txtghichu2 = Cl.Offset(, 10)
End With
Else
MsgBox "KHONG CO MA KHACH HANG NAY"
End If
End Sub
 
Upvote 0
sao khi mình xóa hết dữ liệu mình nhập mới thì code không chạy. bắt buộc phải có dòng dữ liệ đầu tiên ở dòng 10 thì code " ghi dữ liệu mới chạy"
 
Upvote 0
sao khi mình xóa hết dữ liệu mình nhập mới thì code không chạy. bắt buộc phải có dòng dữ liệ đầu tiên ở dòng 10 thì code " ghi dữ liệu mới chạy"
File của bạn đâu, nguyên nhân là do sự cẩu thả của người lập trình, không bao giờ tính hết các trường hợp, bạn chỉ là nạn nhân thui.
 
Upvote 0
bạn diemhuyenanh ơi bạn có thể giải thích giúp mình ở giai doạn này ko, mình cố gắng làm đến đây thì bị lỗi rùi, bạn có thể giải thich giúp mình những đoạn code thực hiện " nhập vào mã số khách hang nhấn enter sẽ hiện lên thông tin khách hang. click "All" hiện toàn bộ danh sách khác hang, sau đó click vào khách hang bất kỳ trong listbox sẽ tự động load thông tin về khách hang đó." được ko bạn, cảm ơn ban

*********************
Private Sub CmdAll_Click()
Dim Rng(), LastRow As Long, i As Long
LastRow = Worksheets("Datalist").Range("A65536").End(xlUp).Row
Rng = Worksheets("Datalist").Range("A2:B" & LastRow).Value
With UserForm1
.LtBMakh.ColumnCount = 2
.LtBMakh.ColumnWidths = ("300,200")
.LtBMakh.List = Rng
End With
End Sub

**************************************
Private Sub CommandButton1_Click()
MaKH.Show
End Sub
***********************************

Private Sub LtBMakh_Click()
With UserForm1
If .LtBMakh.ListCount < 1 Then Exit Sub
.txtMaSo = .LtBMakh.List(.LtBMakh.ListIndex, 0)
.txtHovaten.SetFocus
End With
txtMaSo_AfterUpdate
End Sub

******************************************
Private Sub txtMaSo_AfterUpdate()
Dim Rng As Range, Cl As Range
Set Rng = Worksheets("nguonttkh").Range([B9], [B9].End(xlDown))
Set Cl = Rng.Find(UserForm1.txtMaSo, , xlValues, xlWhole)
If Not Cl Is Nothing Then
sRow = Cl.Row
With UserForm1
.txtSoTT = Cl.Offset(, -1)
.txtHovaten = Cl.Offset(, 1)
.txtTencongty = Cl.Offset(, 2)
.txtNhucau = Cl.Offset(, 3)
.txtTennguoinhan = Cl.Offset(, 4)
.txtDiaChiXH = Cl.Offset(, 5)
.txtDienThoai = Cl.Offset(, 6)
.txtNgaysinh = Format(Cl.Offset(, 8), "dd/mm/yyyy")
.txtEmail = Cl.Offset(, 7)
.txtGHICHU = Cl.Offset(, 9)
.txtghichu2 = Cl.Offset(, 10)
End With
Else
MsgBox "KHONG CO MA KHACH HANG NAY"
End If
End Sub
File của bạn đâu, nguyên nhân là do sự cẩu thả của người lập trình, không bao giờ tính hết các trường hợp, bạn chỉ là nạn nhân thui.
FILE GIỐNG CỦA CÁC BẠN TRÊN ĐANG THẢO LUẬN. Ý MÌNH MUỒN ỨNG DỤNG VÀO FILE CUẢ MÌNH NÊN CŨNG TẬP XEM CODE NHƯNG KHÔNG HIỂU SAO KHI MỞ FORM NHẬP LIỆU Ở SHEET " NguonTTKH" XÓA HẾT DỮ LIỆU CŨ TỪ DÒNG 10 TRỞ ĐI ĐỂ NHẬP MỚI THÌ NÚT " GHI DƯ LIỆU" KHÔNG CHAY. tiện đây bạn giait thích giùm đoạn code :
Private Sub CmdGhidulieu_Click()

Dim j As Integer, EnRow As Long, Cont

EnRow = Worksheets("nguonttkh").Range("B9").End(xlDown).Row + 1

With UserForm1

For j = 1 To 10

Cont = Choose(j, EnRow - 9, .txtMaSo.Text, .txtHovaten.Text, .txtTencongty.Text, .txtNhucau.Text, .txtTennguoinhan.Text, .txtDiaChiXH.Text, .txtDienThoai.Text, .txtEmail.Text, .txtGHICHU.Text)

Worksheets("nguonttkh").Cells(EnRow, j) = Cont

Next j

End With

End Sub.
mình ko hiểu lắm. cảm ơn bạn. file phái dưởi nhờ bạn xem thử
 

File đính kèm

  • Quan ly khach hang 17-04-2015.xls
    488.5 KB · Đọc: 97
Upvote 0
file phái dưởi nhờ bạn xem thử
Mã:
Private Sub CmdGhidulieu_Click()
    Dim j As Integer, EnRow As Long, Cont
  
    
    With Worksheets("nguonttkh")
        EnRow = .Range("B" & .Rows.Count).End(xlUp).Row
        If EnRow <= 9 Then
            EnRow = 10
        Else
            EnRow = EnRow + 1
        End If
    End With
    
    
    
    With UserForm1
        For j = 1 To 10
            Cont = Choose(j, EnRow - 9, .txtMaSo.Text, .txtHovaten.Text, .txtTencongty.Text, .txtNhucau.Text, .txtTennguoinhan.Text, .txtDiaChiXH.Text, .txtDienThoai.Text, .txtEmail.Text, .txtGHICHU.Text)
            Worksheets("nguonttkh").Cells(EnRow, j) = Cont
        Next j
    End With
End Sub

Sửa phần nguyên nhân chính thui, những phần còn lại thì tự sửa nhá.
 
Upvote 0
Cho mình trong sheet QLdonhang, mình bấm vào xem hết tháng , mình tìm tháng hoặc năm ko chạy là sao hả bạn?
 
Upvote 0
Mã:
Private Sub CmdGhidulieu_Click()
    Dim j As Integer, EnRow As Long, Cont


    With Worksheets("nguonttkh")
        EnRow = .Range("B" & .Rows.Count).End(xlUp).Row
        If EnRow <= 9 Then
            EnRow = 10
        Else
            EnRow = EnRow + 1
        End If
    End With



    With UserForm1
        For j = 1 To 10
            Cont = Choose(j, EnRow - 9, .txtMaSo.Text, .txtHovaten.Text, .txtTencongty.Text, .txtNhucau.Text, .txtTennguoinhan.Text, .txtDiaChiXH.Text, .txtDienThoai.Text, .txtEmail.Text, .txtGHICHU.Text)
            Worksheets("nguonttkh").Cells(EnRow, j) = Cont
        Next j
    End With
End Sub

Sửa phần nguyên nhân chính thui, những phần còn lại thì tự sửa nhá.
CẢM ƠN BẠN RẤT NHIỀU. NHỜ BẠN MÌNH ĐÃ TÙY BIẾN FILE MỘT CHÚT CHO HỢP VỚI MỤC ĐÍCH CỦA MÌNH. mình có thử sửa nhưng một số chỗ chưa được mong bạn giúp đỡ.
- mình có file nhập thông tin học sinh đã làm theo mẫu. giờ mình muốn khi chech và checkbox thì dấu x được lưu vào cột nữ khi khi ghi và cập nhật
- listbox dữ liệu mới nhập không hiển thị ngay mà phải đóng form rồi mở lại mới thấy, có thể nhập xong là hiển thị ngay trong listbox được không?
- mình muốn 3 combox " phường", " quan" " tp" được liên kết theo kiểu combox phụ thuộc ( chọn tỉnh ở combo tinh thì sẽ hiện quan tương ứng ở combox quận, khi chọn quận thì chỉ hiện các phường ở quận đó. cái này đã xem anh e chỉ nhưng toàn trên sheets chứ không thấy trên form)
- phía trên lisbox có 2 combox khi nhập lớp và họ tên rồi nhấn tìm kiếm nếu thỏa mãn 2 đk này thì sẽ tô màu hs dưới listbox, nếu không có thì báo không tìm thấy dữ liệu
cảm ơn bạn rất nhiều
 

File đính kèm

  • FROM THU HO SO .xlsm.xls
    276 KB · Đọc: 147
Lần chỉnh sửa cuối:
Upvote 0
CẢM ƠN BẠN RẤT NHIỀU. NHỜ BẠN MÌNH ĐÃ TÙY BIẾN FILE MỘT CHÚT CHO HỢP VỚI MỤC ĐÍCH CỦA MÌNH. mình có thử sửa nhưng một số chỗ chưa được mong bạn giúp đỡ.
- mình có file nhập thông tin học sinh đã làm theo mẫu. giờ mình muốn khi chech và checkbox thì dấu x được lưu vào cột nữ khi khi ghi và cập nhật
- listbox dữ liệu mới nhập không hiển thị ngay mà phải đóng form rồi mở lại mới thấy, có thể nhập xong là hiển thị ngay trong listbox được không?
- mình muốn 3 combox " phường", " quan" " tp" được liên kết theo kiểu combox phụ thuộc ( chọn tỉnh ở combo tinh thì sẽ hiện quan tương ứng ở combox quận, khi chọn quận thì chỉ hiện các phường ở quận đó. cái này đã xem anh e chỉ nhưng toàn trên sheets chứ không thấy trên form)
- phía trên lisbox có 2 combox khi nhập lớp và họ tên rồi nhấn tìm kiếm nếu thỏa mãn 2 đk này thì sẽ tô màu hs dưới listbox, nếu không có thì báo không tìm thấy dữ liệu
cảm ơn bạn rất nhiều
Góp ý cho bạn:
1/ Muốn sử dụng Combox phụ thuộc thì phải sửa quận thì phải sửa tiêu đề lại theo trình tự tỉnh > huyện > xã (phường).
2/ Để dùng PivotTable tổng hợp bất kỳ thứ gì đó theo tỉnh thành, tôn giáo, nam nữ thì tiêu đề cột nên nằm trong 1 dòng và không được Merge and Center.
 
Upvote 0
Góp ý cho bạn:
1/ Muốn sử dụng Combox phụ thuộc thì phải sửa quận thì phải sửa tiêu đề lại theo trình tự tỉnh > huyện > xã (phường).
2/ Để dùng PivotTable tổng hợp bất kỳ thứ gì đó theo tỉnh thành, tôn giáo, nam nữ thì tiêu đề cột nên nằm trong 1 dòng và không được Merge and Center.
Cảm ơn bác,.Về pivottable e chưa rành, còn về các name tp, quận, phường em đã tao bên sheet " DMDIACHI". e chủ yếu cần liên kết các quận, huyên, và phường xã của tp hcm ở phần địa chỉ hiện tại. còn phần noi sinh thì e có thể làm combox được . Cái checkbox làm sao được hả bác? Mong bác chỉ giáo
 
Upvote 0
Web KT

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

Back
Top Bottom