Viết đoạn code cho nút lệnh SAVE ? (1 người xem)

  • Thread starter Thread starter van80
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

van80

Thành viên chính thức
Tham gia
5/7/09
Bài viết
73
Được thích
4
Chào các anh, chị trên diễn đàn !
Nhờ anh, chị viết dùm code cho nút lệnh SAVE
Tôi xin trích dẫn như sau:
Chương trình này gồm 2 sheet: một sheet(data) và một sheet(xem) và có 2 nút lệnh: Xem và SAVE
Muốn xem hồ sơ của học sinh thì gõ mã số của HS vào ô P10 và Click nút Xem
Vấn đề tôi đặt ra ở đây là bước sang năm học mới cập nhật thêm số liệu
Ví dụ năm học 13-14 HS lên lớp hay ở lại thì tôi gõ vào cột tương ứng của năm học (F10) 9A
Click SAVE thì số liệu cập nhật vào sheet(data) ngay đúng vị trí ban đầu ( vị trí ban đầu ở dòng 11 thì phải SAVE ở đúng vị trí dòng 11)
Nút lệnh Xem chạy được rồi , nhờ các Anh, Chị viết dùm nút lệnh SAVE
Trân trọng cám ơn !
File đính kèm :View attachment PHS.rar
 
Các Anh, chị ơi ! giúp em viết code cho nút lệnh SAVE nha. Em rất cần code này.Em xin cám ơn nhiều !

bạn thử gán đoạn code sau cho nút lệnh save

Sub save()



Dim tim As Range
For i = 10 To [p1000].End(3).Row
With Sheet2
Set tim = .[p7:p60000].Find(Sheet1.Range("P" & i))
If Not tim Is Nothing Then
tim.Offset(, -14).Resize(, 14).Value = Sheet1.Range("B" & i).Resize(, 14).Value
Else
.[B6000].End(3).Offset(1).Resize(, 15).Value = Sheet1.Range("B" & i).Resize(, 15).Value
End If
End With
Next

End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
bạn thử gán đoạn code sau cho nút lệnh save

Sub save()



Dim tim As Range
For i = 10 To [p1000].End(3).Row
With Sheet2
Set tim = .[p7:p60000].Find(Sheet1.Range("P" & i))
If Not tim Is Nothing Then
tim.Offset(, -14).Resize(, 14).Value = Sheet1.Range("B" & i).Resize(, 14).Value
Else
.[B6000].End(3).Offset(1).Resize(, 15).Value = Sheet1.Range("B" & i).Resize(, 15).Value
End If
End With
Next

End Sub
Tất cả đều cập nhật đúng vị trí của nó. Tại sao các ô Q10, H3, G4, G5, N4, O3 và O5 không cập nhật được nhỉ ? Bạn giúp dùm mình với các ô này nha ! Cám ơn bạn nhiều! Thân chào !
 
Upvote 0
Tất cả đều cập nhật đúng vị trí của nó. Tại sao các ô Q10, H3, G4, G5, N4, O3 và O5 không cập nhật được nhỉ ? Bạn giúp dùm mình với các ô này nha ! Cám ơn bạn nhiều! Thân chào !

bạn xem đoạn code này, điểu chỉnh lại địa chỉ cell nều nó ko vào đúng địa chỉ
(ngồi gõ từng cell, tôi làm biếng quá................)

Sub save()



Dim tim As Range
For i = 10 To [p1000].End(3).Row
With Sheet2
Set tim = .[p7:p60000].Find(Sheet1.Range("P" & i))
If Not tim Is Nothing Then
tim.Offset(, -14).Resize(, 16).Value = Sheet1.Range("B" & i).Resize(, 16).Value
tim.Offset(, 2).Value = [O3].Value
tim.Offset(, 3).Value = [h3].Value
tim.Offset(, 4).Value = [g5].Value
tim.Offset(, 5).Value = [o5].Value
tim.Offset(, 6).Value = [n5].Value


Else
.[B6000].End(3).Offset(1).Resize(, 16).Value = Sheet1.Range("B" & i).Resize(, 16).Value
'tuong tu vây ban làm thêm nhu trên

End If
End With
Next

End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
bạn xem đoạn code này, điểu chỉnh lại địa chỉ cell nều nó ko vào đúng địa chỉ
(ngồi gõ từng cell, tôi làm biếng quá................)

Sub save()



Dim tim As Range
For i = 10 To [p1000].End(3).Row
With Sheet2
Set tim = .[p7:p60000].Find(Sheet1.Range("P" & i))
If Not tim Is Nothing Then
tim.Offset(, -14).Resize(, 16).Value = Sheet1.Range("B" & i).Resize(, 16).Value
tim.Offset(, 2).Value = [O3].Value
tim.Offset(, 3).Value = [h3].Value
tim.Offset(, 4).Value = [g5].Value
tim.Offset(, 5).Value = [o5].Value
tim.Offset(, 6).Value = [n5].Value


Else
.[B6000].End(3).Offset(1).Resize(, 16).Value = Sheet1.Range("B" & i).Resize(, 16).Value
'tuong tu vây ban làm thêm nhu trên

End If
End With
Next

End Sub
Mình đã điều chỉnh được rồi, Cám ơn bạn nhiều!
 
Upvote 0
bạn xem đoạn code này, điểu chỉnh lại địa chỉ cell nều nó ko vào đúng địa chỉ
(ngồi gõ từng cell, tôi làm biếng quá................)

Sub save()



Dim tim As Range
For i = 10 To [p1000].End(3).Row
With Sheet2
Set tim = .[p7:p60000].Find(Sheet1.Range("P" & i))
If Not tim Is Nothing Then
tim.Offset(, -14).Resize(, 16).Value = Sheet1.Range("B" & i).Resize(, 16).Value
tim.Offset(, 2).Value = [O3].Value
tim.Offset(, 3).Value = [h3].Value
tim.Offset(, 4).Value = [g5].Value
tim.Offset(, 5).Value = [o5].Value
tim.Offset(, 6).Value = [n4].Value
tim.Offset(, 6).Value = [g4].Value

Else
.[B6000].End(3).Offset(1).Resize(, 16).Value = Sheet1.Range("B" & i).Resize(, 16).Value
'tuong tu vây ban làm thêm nhu trên

End If
End With
Next

End Sub
Bạn ơi đoạn code trên nó hiểu nhầm các mã số sau tính từ trên xuống: Ví dụ: khi cập nhập mã số 0002031 thì chương trình tìm mã số 9802031 cập nhập, tương tự như vậy mã số này 0003025 hiểu nhầm mã số 9503025,... Bạn gở rối dùm mình ở chỗ này đi. Thân chào bạn!
 
Upvote 0
Bạn ơi đoạn code trên nó hiểu nhầm các mã số sau tính từ trên xuống: Ví dụ: khi cập nhập mã số 0002031 thì chương trình tìm mã số 9802031 cập nhập, tương tự như vậy mã số này 0003025 hiểu nhầm mã số 9503025,... Bạn gở rối dùm mình ở chỗ này đi. Thân chào bạn!

bạn set lại trong máy bạn như sau:
-->nhấn Ctrl H-->hộp thoại hiện "Find and replace"--->nhấp chọn "option"--->chọn "match entire cell content"

còn không thì trong đoạn code trên có lệnh
Set tim = .[p7:p60000].Find(Sheet1.Range("P" & i))
bạn sữa thành
Set tim = .[p7:p60000].Find(Sheet1.Range("P" & i), , , , , , 0)
hy vọng là đúng
 
Lần chỉnh sửa cuối:
Upvote 0
bạn set lại trong máy bạn như sau:
-->nhấn Ctrl H-->hộp thoại hiện "Find and replace"--->nhấp chọn "option"--->chọn "match entire cell content"

còn không thì trong đoạn code trên có lệnh
Set tim = .[p7:p60000].Find(Sheet1.Range("P" & i))
bạn sữa thành
Set tim = .[p7:p60000].Find(Sheet1.Range("P" & i), , , , , , 0)
hy vọng là đúng
vẫn không được bạn ơi ! mình mới vừa thử mã số 0003035 thì nó tìm mã 9503035 để cập nhật ( mã số 9503035 ở phía trên mã số 0003035 )
 
Upvote 0
[THongBao]vẫn không được bạn ơi ! mình mới vừa thử mã số 0003035 thì nó tìm mã 9503035 để cập nhật ( mã số 9503035 ở phía trên mã số 0003035 )[/ThongBao]

Trong excel ta biết có vài kí tự đại diện, & có lẽ chuyện này ảnh hưởng rất nhiều đầu quá trình tìm kiếm;

Như tìm HS (học sinh) lớp 6A1 excel sẽ lôi cả 6A10 hay 6A11, . . . vô cho bạn;
Kinh nghiệm là mã (duy nhất) nên có độ dài bằng nhau ;

Ngặt bằng bạn fải chì dùng ký số cho mã duy nhất, bạn nên bó đi các chữ số 0 vô nghĩa (với ai đó) đi!

Như CQ (cơ quan) bạn gần ngàn người, thì bạn nên dùng 1000 cho người đầu tiên vô CQ
 
Upvote 0
vẫn không được bạn ơi ! mình mới vừa thử mã số 0003035 thì nó tìm mã 9503035 để cập nhật ( mã số 9503035 ở phía trên mã số 0003035 )

vậy thì tôi ko hiểu, tôi đã test đi text lại nhiều lần nhưng ko bị
bạn nhấn ctrl H kiểm tra xem nó click vào ô nào vậy? "match case" hay "match entire cell content", nếu nó stick vào cái màu đỏ mới đúng.(tôi nghĩ máy bạn cái màu xanh đang được đánh dấu)
kiểm tra lại code:
Set tim = .[p7:p60000].Find(Sheet1.Range("P" & i), , , , , , 0)
phải đảm bảo format của cột P ở 2 sheet là giống nhau
 
Upvote 0
vậy thì tôi ko hiểu, tôi đã test đi text lại nhiều lần nhưng ko bị
bạn nhấn ctrl H kiểm tra xem nó click vào ô nào vậy? "match case" hay "match entire cell content", nếu nó stick vào cái màu đỏ mới đúng.(tôi nghĩ máy bạn cái màu xanh đang được đánh dấu)
kiểm tra lại code:
Set tim = .[p7:p60000].Find(Sheet1.Range("P" & i), , , , , , 0)
phải đảm bảo format của cột P ở 2 sheet là giống nhau
Thành công rồi, Cám ơn bạn nhiều !
 
Upvote 0

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

Back
Top Bottom