thanhtung0112
Thành viên chính thức
- Tham gia
- 24/1/17
- Bài viết
- 51
- Được thích
- 5
Bạn muốn thế nào thì nói rõ 1 chút. đọc xong ma cũng chưa hiểu bạn muốn giúp gì áChào Anh Chị!
Hiện mình viết được bài Code là tra và nhập dữ liệu.
Bây giờ mình muốn sửa dữ liệu đã có mà không biết đoạn Code, nhờ anh chị giúp mình đoạn code với ạ, cảm ơn mọi người
VD: mình nhập CMND của người đó, thì form sẽ hiện thông tin người đó ra, nhưng mình muốn sửa và nhập lại thông tin khác của người đó lại thì phải làm như thế nào áBạn muốn thế nào thì nói rõ 1 chút. đọc xong ma cũng chưa hiểu bạn muốn giúp gì á
Sửa đoạn code sau:Chào Anh Chị!
Hiện mình viết được bài Code là tra và nhập dữ liệu.
Bây giờ mình muốn sửa dữ liệu đã có mà không biết đoạn Code, nhờ anh chị giúp mình đoạn code với ạ, cảm ơn mọi người
Private Sub BtxReset_Click()
If Txt01.Text = "" Then Exit Sub
Dim Rng As Range, xFind As Range
Set Rng = Sheet1.Range("B2:B5000")
Set xFind = Rng.Find(Me.Txt01.Text, , , 1, , , 1)
If Not xFind Is Nothing Then
xFind = Txt01.Text
xFind.Offset(0, 1) = Txt02.Text
xFind.Offset(0, 2) = Txt03.Text
xFind.Offset(0, 3) = Txt10.Text
End If
Txt01.Text = ""
Txt02.Text = ""
Txt03.Text = ""
Txt10.Text = ""
End Sub
Cảm ơn bạn nhiều lắm, mà bạn ơi mình muốn nhập thêm người mới sao đoạn Code báo lỗi không à, giúp mình sửa thêm đoạn Code Nhập mới nha.Sửa đoạn code sau:
Mã:Private Sub BtxReset_Click() If Txt01.Text = "" Then Exit Sub Dim Rng As Range, xFind As Range Set Rng = Sheet1.Range("B2:B5000") Set xFind = Rng.Find(Me.Txt01.Text, , , 1, , , 1) If Not xFind Is Nothing Then xFind = Txt01.Text xFind.Offset(0, 1) = Txt02.Text xFind.Offset(0, 2) = Txt03.Text xFind.Offset(0, 3) = Txt10.Text End If Txt01.Text = "" Txt02.Text = "" Txt03.Text = "" Txt10.Text = "" End Sub
Bạn viết được đoạn code trong đó, tìm dòng cuối là viết được thôi (Search trên diễn đàn cách tìm dòng cuối).Cảm ơn bạn nhiều lắm, mà bạn ơi mình muốn nhập thêm người mới sao đoạn Code báo lỗi không à, giúp mình sửa thêm đoạn Code Nhập mới nha.
Sao mình tìm không có thấy, bạn cho mình xin đường links nha, cảm ơn b nhiều. Nếu được bạn hướng dẫn mình sửa đoạn Code Nhập liệu thêm nha.Bạn viết được đoạn code trong đó, tìm dòng cuối là viết được thôi (Search trên diễn đàn cách tìm dòng cuối).
(1) https://www.giaiphapexcel.com/diend...-tìm-kiếm-find-find-method.15116/page-2#posts(1) Sao mình tìm không có thấy, bạn cho mình xin đường links nha, cảm ơn b nhiều. (2) Nếu được bạn hướng dẫn mình sửa đoạn Code Nhập liệu thêm nha.
(1) Muốn sửa dữ liệu, ta phải tìm cho ra dữ liệu cần sửa;. . . Hiện mình viết được bài Code là tra và nhập dữ liệu.
Bây giờ mình muốn sửa dữ liệu đã có mà không biết đoạn Code, nhờ anh chị giúp mình đoạn code với ạ, cảm ơn mọi người
6 | 290821404 | nguyễn thị duyên | B045 | 7231094890 | |||||||
7 | 290420431 | nguyễn văn sơn | B045 | 7231031389 | |||||||
8 | 075092000307 | lê thành vinh | B045 | 7231714805 | |||||||
9 | 291199267 | mai thị kim huệ | B045 | 7231684976 | |||||||
10 | 270608065 | lê thành dương | B045 | 7531920857 | |||||||
11 | 072176002292 | phạm kim lan | B045 | 7231772566 | |||||||
12 | 072072002857 | nguyễn thanh phú | B045 | 0 | |||||||
13 | 075156000099 | nguyễn thị mười | B045 | 7231778292 |
STT | Mã NV | Họ và Tên | Mã Cụm | Mã CIC | CMND | ||||||||||||||
1 | FHP00 | Đinh Hòang Phong | B045 | 7231593990 | 312059633 | ||||||||||||||
2 | FVP00 | Đặng Văn Phát | B045 | 7231718920 | 072074001267 | ||||||||||||||
3 | FVS00 | Đặng Văn Sương | B045 | 7231817621 | 290357527 | ||||||||||||||
4 | LTA00 | Lê Thanh Anh | B045 | 7231714805 | 075092000307 | ||||||||||||||
5 | LTD00 | Lê Thành Dương | B045 | 7531920857 | 270608065 | ||||||||||||||
6 | LTD01 | Lê Tấn Dũng | B045 | 7231772566 | 072176002292 | ||||||||||||||
7 | LTD02 | Lê Thi Thùy Dung | B045 | 0 | 072072002857 | ||||||||||||||
8 | LTV00 | Lê Thiện Vinh | B045 | 7231778675 | 072071001972 | ||||||||||||||
9 | MKH00 | Mai Thị Kim Huệ | B045 | 7231684976 | 291199267 | ||||||||||||||
10 | NTM00 | Nguyễn Thị Mười | B045 | 7231778292 | 075156000099 | ||||||||||||||
11 | NCH00 | Nguyễn Thị Cẩm Hằng | B045 | 7935323700 | 072174000940 | ||||||||||||||
12 | NFD00 | Ngô Đức Dũng | B045 | 7231031389 | 290420431 | ||||||||||||||
13 | NHT00 | Nguyễn Hoàng Trang | B045 | 7231050666 | 290188957 | ||||||||||||||
14 | NJD00 | Ngô Duyên | B045 | 7231094890 | 290821404 | ||||||||||||||
15 | NTL00 | Nguyễn Thị Liờn | B050 | 7231591251 | 290045082 | ||||||||||||||
16 | PKM00 | Phạm Kim Mây | B045 | 7231158552 | 290188737 | ||||||||||||||
17 | PML00 | Phan Thị Mỹ Linh | B045 | 7231624125 | 290743931 | ||||||||||||||
18 | TBB00 | Trần Thị Bé Bảy | B045 | 7231002817 | 072165001046 | ||||||||||||||
19 | TMH00 | Trần Thị Mỹ Hạnh | B045 | 7231700668 | 072168000948 | ||||||||||||||
20 | TMN00 | Từ Minh Nhiều | B045 | 7231018945 | 072073001361 | ||||||||||||||
21 | VKN00 | Võ Thị Kim Nương | B045 | 7931152773 | 290541974 |
Người ta chỉ làm hồ sơ thôi....
(2) Vấn đề này bạn chớ xem thường: Trong CSDL của bạn rất nhiều dòng sai chính tả & điều này mình có thể chụp cho bạn cái nón: Chưa thấy 2uan tài chưa đỗ lệ!
Hiễn nhiên 1 điều là họ & tên trong CCCD không như bạn đã ghi như dưới đây:
...
1./ Nhớ vào khoảng năm 95, khi triển khai số BHXH trong các CQ quốc doanh, mình tá hỏa khi thẻ quân nhân ghi 1 ông sỹ quan chuyển ngành sinh ngày 30/02Người ta chỉ làm hồ sơ thôi.
Kẻ thấy quan tài là những kẻ trong danh sách.
Nếu muốn trong Txt01 vừa có thể nhập CMND ĐÃ CÓ để sửa thông tin và vừa có thể nhập CMND CHƯA CÓ để nhập mới thì không thể có code kiểuCảm ơn bạn nhiều lắm, mà bạn ơi mình muốn nhập thêm người mới sao đoạn Code báo lỗi không à, giúp mình sửa thêm đoạn Code Nhập mới nha.
Private Sub Txt01_AfterUpdate()
'Check to see if value exists
If Me!Txt01.Text = "" Then Exit Sub
If WorksheetFunction.CountIf(Sheet1.Range("B:B"), Me.Txt01.Value) = 0 Then
MsgBox "CMND sai OR k CIC "
Me.Txt01.Value = ""
Exit Sub
End If
'Lookup values based on first control
With Me
.Txt02 = Application.WorksheetFunction.VLookup(Me.Txt01.Value, Sheet1.Range("lookup"), 2, 0)
.Txt10 = Application.WorksheetFunction.VLookup(Me.Txt01.Value, Sheet1.Range("lookup"), 4, 0)
.Txt03 = Application.WorksheetFunction.VLookup(Me.Txt01.Value, Sheet1.Range("lookup"), 3, 0)
End With
End Sub
Private Sub Txt01_AfterUpdate()
Dim rng As Range, cell_ As Range
Txt01.Tag = "" ' TAG = 0 co nghia la CMND trong txt01 CHUA CO
If Txt01.Text = "" Then Exit Sub
Set rng = Sheet1.Range("B2:B5000")
Set cell_ = rng.Find(Me.Txt01.Text, , xlValues, xlWhole, xlByRows, xlNext)
If Not cell_ Is Nothing Then ' tim thay CMND DA CO
With cell_
Txt02 = .Offset(0, 1).Value
Txt10 = .Offset(0, 3).Value
Txt03 = .Offset(0, 2).Value
End With
Txt01.Tag = cell_.Address ' CMND DA CO, tuc se sua thong tin, vay ghi dia chi cua o co CMND hien hanh vao TAG cua TextBox
End If
End Sub
Private Sub BtxReset_Click()
Dim EndR As Long
If Txt01.Text = "" Then Exit Sub
If Txt01.Tag <> "" Then ' CMND DA CO -> sua thong tin
With Sheet1.Range(Txt01.Tag)
.Offset(0, 1) = Txt02.Text
.Offset(0, 2) = Txt03.Text
.Offset(0, 3) = Txt10.Text
End With
Else ' CMND CHUA CO -> them thong tin
With Sheets("Data")
EndR = .Range("B" & Rows.Count).End(xlUp).Row
.Range("B" & EndR + 1) = Txt01.Text
.Range("C" & EndR + 1) = Txt02.Text
.Range("D" & EndR + 1) = Txt03.Text
.Range("E" & EndR + 1) = Txt10.Text
End With
End If
Txt01.Text = ""
Txt02.Text = ""
Txt03.Text = ""
Txt10.Text = ""
End Sub
Bạn viết được đoạn code trong đó, tìm dòng cuối là viết được thôi (Search trên diễn đàn cách tìm dòng cuối).
EndR = .Range("B" & Rows.Count).End(xlUp).Row
Cảm ơn bạn rất nhiềuNếu muốn trong Txt01 vừa có thể nhập CMND ĐÃ CÓ để sửa thông tin và vừa có thể nhập CMND CHƯA CÓ để nhập mới thì không thể có code kiểu
Mã:Private Sub Txt01_AfterUpdate() 'Check to see if value exists If Me!Txt01.Text = "" Then Exit Sub If WorksheetFunction.CountIf(Sheet1.Range("B:B"), Me.Txt01.Value) = 0 Then MsgBox "CMND sai OR k CIC " Me.Txt01.Value = "" Exit Sub End If 'Lookup values based on first control With Me .Txt02 = Application.WorksheetFunction.VLookup(Me.Txt01.Value, Sheet1.Range("lookup"), 2, 0) .Txt10 = Application.WorksheetFunction.VLookup(Me.Txt01.Value, Sheet1.Range("lookup"), 4, 0) .Txt03 = Application.WorksheetFunction.VLookup(Me.Txt01.Value, Sheet1.Range("lookup"), 3, 0) End With End Sub
Hãy suy nghĩ chút đi. Tạo hóa đã cho cái hộp trên cổ thì nên tận dụng nó. Nếu nhập CMND CHƯA CÓ thì dĩ nhiên
WorksheetFunction.CountIf(Sheet1.Range("B:B"), Me.Txt01.Value) = 0
và do vậy code MsgBox "CMND sai OR k CIC " được thực thi, tức thông báo lỗi.
Phải sửa thành vd.
Mã:Private Sub Txt01_AfterUpdate() Dim rng As Range, cell_ As Range Txt01.Tag = "" ' TAG = 0 co nghia la CMND trong txt01 CHUA CO If Txt01.Text = "" Then Exit Sub Set rng = Sheet1.Range("B2:B5000") Set cell_ = rng.Find(Me.Txt01.Text, , xlValues, xlWhole, xlByRows, xlNext) If Not cell_ Is Nothing Then ' tim thay CMND DA CO With cell_ Txt02 = .Offset(0, 1).Value Txt10 = .Offset(0, 3).Value Txt03 = .Offset(0, 2).Value End With Txt01.Tag = cell_.Address ' CMND DA CO, tuc se sua thong tin, vay ghi dia chi cua o co CMND hien hanh vao TAG cua TextBox End If End Sub
Code ghi thông tin vào thuộc tính TAG của txt01: Nếu TAG <> "" thì có nghĩa là chứa địa chỉ của ô trên sheet có CMND ĐÃ CÓ.
Không cần tới 2 nút CommandButton. Chỉ 1 button thôi, vd. lấy BtxReset.
Mã:Private Sub BtxReset_Click() Dim EndR As Long If Txt01.Text = "" Then Exit Sub If Txt01.Tag <> "" Then ' CMND DA CO -> sua thong tin With Sheet1.Range(Txt01.Tag) .Offset(0, 1) = Txt02.Text .Offset(0, 2) = Txt03.Text .Offset(0, 3) = Txt10.Text End With Else ' CMND CHUA CO -> them thong tin With Sheets("Data") EndR = .Range("B" & Rows.Count).End(xlUp).Row .Range("B" & EndR + 1) = Txt01.Text .Range("C" & EndR + 1) = Txt02.Text .Range("D" & EndR + 1) = Txt03.Text .Range("E" & EndR + 1) = Txt10.Text End With End If Txt01.Text = "" Txt02.Text = "" Txt03.Text = "" Txt10.Text = "" End Sub
Vứt bỏ nút btxNhapvaThem.
Nhìn qua là thế, hãy test kỹ.
-------------
Người ta biết tìm dòng cuối mà.
Trích btxNhapvaThem_Click
Tại thớt làm theo kiểu "nghĩ đến đâu làm đến đó". Không có một kế hoạch sẵn.Nếu muốn trong Txt01 vừa có thể nhập CMND ĐÃ CÓ để sửa thông tin và vừa có thể nhập CMND CHƯA CÓ để nhập mới thì không thể có code kiểu
...