từ danh sách đóng tiền lọc ra làm danh sách thi (3 người xem)

Liên hệ QC

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

Uhm qua tết bạn xem giùm mình luôn sao khi insert thêm hay xóa đi khoảng 5 dòng thì nó báo lỗi ngay đoạn này nha: ;;;;;;;;;;; ;;;;;;;;;;; %#^#$ :-=
ShName = Choose(Target.Column - 14, "QLHS", "THESV", "mh1", "mh2", "mh3", "mh4", _
"mh5", "mh6", "mh7", "mh8", "mh9", "mh10", "mh11", "mh12", "mh13", "mh14", "mh15" _
, "mh16", "mh17", "mh18", "mh19", "mh20", "mh21", "mh22", "mh23", "mh24", "mh25")
 
Lần chỉnh sửa cuối:
Xin góp í với bạn về tiết kiệm tài nguyên trong CSDL.

Thứ nhất: Đó là mã SV
Hiện tại của bạn đang là: 19QT09A001 cho đến 19QT09A1954
+ Độ dài của mã phải bằng nhau trong tất cả các records! (Vì sao ư, chuyện dài lắm đó . . . )
+ 09 có lẽ biểu thị năm học? Nếu vậy dùng 2 ký tự là dư, Sao ta không dùng chỉ 1 ký tự?
Ví dụ năm 2010 biểu thị bằng chữ 'A'; 2012 là 'C', . . . . Và như vậy chúng ta còn xài trên 26 năm nữa mới hết kho dự trữ. Hơn nữa, đến lúc đó (2036) chương trình quản lý SV này được về hưu rồi cũng nên!
Với dữ liệu độ 10.000 records thì bạn đã tiết kiệm được bao nhiêu rồi ấy chứ!
+ Cho phép được hỏi sâu thêm 1 chút, 19QT là gì vậy? Nếu rõ về ý nghĩa của cụm này, chúng ta có thể rút ngắn lại, nhằm đỡ ì ạch sau này khi đưa CSDL vô hoạt động.
Thứ hai: Đó là mã tỉnh
Bạn nên lập danh sách về mã tỉnh riêng, ví du:
|A|B|
|Ma|TTinh|
|08|Tp HCM|
|60| Đồng nai|
|. . .|. . . |​
|||
như vậy mỗi SV chỉ có 2 kí tự biểu thị nơi sinh thay vì trung bình 15 ký tự như hiện nay. (Ngoài ra ở cột 'GhiChu' của bạn tôi chưa kể)
Bạn thử làm con tính về số byte bạn tiết kiệm được xem sao! Ngoài ra máy tính sẽ tìm nhanh hơn, nếu nó phải có nhiệm vụ thống kế cư dân các tỉnh trong CSDL của ta đó nha!
Một lưu í nhỏ nữa, tên trường trong CSDL không nên dùng từ Việt hay có khoảng trắng​
Thay vì như của bạn, ta nên sửa lại là: [TT], [MaSV], [Ho], [Ten], [NgaySinh], . . .
Chúc vui!​
 
Chỉnh sửa lần cuối bởi điều hành viên:
Mình xin cảm ơn những ý kiến góp ý của bạn Hyen17. Những ý bạn nói rất hợp lý nhưng mà tiếc là mình không thể thay đổi cách cho mã số được tại vì cái đó cơ quan "xếp" mình cho. Mình sẽ góp ý lên trên, với lại thông thường độ dài mã số sẽ bằng nhau vì đến 999 sẽ có chuyển qua số khác.

19QT là ký hiệu nghành học và cơ sở học đó bạn, tại vì thông thường 1 tỉnh sẽ có 2 đến 3 cơ sở lận, tại vì đào tạo từ xa mà, mình chỉ ở 1 trong những cơ sở đó thôi nhưng ở các cở sở khác đến đăng ký học và thi thì phải nhận và tách riêng ra nữa.

Về phần nơi sinh bạn nói đúng nhưng mình chỉ quản lý các sinh viên ở cơ sở mình thôi còn những nơi khác mình được ở trên chuyển xuống, bây giờ muốn thay đổi lại hết mình cũng chưa biết phải làm thế nào nữa nhưng mình sẽ nghiên cứu về chuyện đó.

Còn phần có khoảng trắng và ghi tiếng việt quả thật là do mình "gà" về CSDL, mình để vậy để tiện cho việc in ấn nhưng lần trước bạn ChanhTQ@ có góp ý cho mình một lần mình cũng đã có sữa chữa lại rồi.

Cảm ơn những ý kiến đóng góp của bạn, mong sẽ được bạn giúp đỡ và chỉ dẫn nhiều hơn. Chúc bạn luôn vui khỏe@$@!^% @$@!^% /-*+/ :-=
 
Hãy thử lại lần nữa xem sao?

. . bạn xem giùm mình luôn sao khi insert thêm hay xóa đi khoảng 5 dòng thì nó báo lỗi ngay đoạn này nha:
Bạn mở file ra; Đến sheets("TheSV") & xóa bằng tay các records trong đó!
GĐ: Thêm 1 lúc 4 records
Tiếp theo sang sheets1; tới cột 'P'
Dùng chuột chọn các ô thuộc hàng 5,6,7 & 9 (kích hoạt các ô này);
Sau đó bấm chuột lên thanh công thức; nhập ký tự 'x' hay 'X'
giữ phím {CTRL} & bấm {ENTER}
Nếu ta sang 'TheSV' thấy có 4 records thì mới sang giai đoạn sau;

GĐ2: Xóa 4 records này:
Dùng chuột kích hoạt vùng từ "P5:P9" & bấm phím {Delete} xem macro có làm điều gì không?
Nếu macro còn cự nự, báo cho GPE.COM xử lý tiếp!
 
Ý mình không phải bạn Hyen17 ơi. Khi dùng đoạn code mới nhất của bạn ChanhTQ@ thì khi insert hoặc xóa đi 5 dòng mới có nghĩa là khi copy 5 hàng ngang cũ rồi insert copies cell hoặc delete 5 hàng ngang thì báo lỗi ngay đoạn code mình nêu ở trên đó. Mình đang dùng đoan code này của bạn ChanhTQ@ nè:
Option Explicit
Const SoSV As Integer = 11999
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, sRng As Range, Clls As Range
Dim Jj
As Byte: Dim ShName As String

If Not Intersect(Range("O3:AO" & SoSV), Target) Is Nothing Then
Application
.ScreenUpdating = False
ShName
= Choose(Target.Column - 14, "QLHS", "THESV", "mh1", "mh2", "mh3", "mh4", _
"mh5", "mh6", "mh7", "mh8", "mh9", "mh10", "mh11", "mh12", "mh13", "mh14", "mh15" _
, "mh16", "mh17", "mh18", "mh19", "mh20", "mh21", "mh22", "mh23", "mh24", "mh25")
If
Target.Cells(1, 1) = "" Then 'Delete more than record'
For Each Clls In Target
Set Rng
= Cells(Clls.Row, "F").Resize(, 7)
With Sheets(ShName).Columns("B:B")
Set sRng = .Find(Rng.Cells(1, 1).Value, _
LookIn
:=xlFormulas, lookat:=xlWhole)
If
Not sRng Is Nothing Then sRng.EntireRow.Delete
End With
Next Clls
ElseIf UCase$(Target.Cells(1, 1)) = "X" Then 'Add Records to Sheet'
For Each Clls In Target
Sheets
(ShName).[B65500].End(xlUp).Offset(1).Resize(, 7).Value _
= Cells(Clls.Row, "F").Resize(, 7).Value
Next Clls
End
If
ElseIf
Not Intersect(Target, Range("F3:F" & SoSV)) Is Nothing Then
For Jj = 1 To 2
ShName
= Choose(Jj, "taiday", "noikhac")
With Sheets(ShName).Range("B2:B" & SoSV)
Set sRng = .Find(what:=Target.Value, LookIn:=xlFormulas, lookat:=xlWhole)
If
Not sRng Is Nothing Then _
Target
.Offset(, 1).Resize(, 7).Value = sRng.Offset(, 1).Resize(, 7).Value
End With
Next Jj
End
If
End Sub
Uh với lại bạn chỉ dùm mình chỉnh chỗ nào để cố định 1 dòng trên cùng để khi rê chuột giữa thì chỉ chạy xuống các dòng phía dưới thôi với như là file mình kèm theo nè, mình mò hoài mà không biết chỉnh chỗ nào, ban vào file rê chuột giữa là biết liền ah. Cảm ơn bạn đã giúp đỡ:-= --=0 %#^#$
 

File đính kèm

chỉ dùm mình chỉnh chỗ nào để cố định 1 dòng trên cùng để khi rê chuột giữa thì chỉ chạy xuống các dòng phía dưới thôi với như là file mình kèm theo nè, mình mò hoài mà không biết chỉnh chỗ nào, ban vào file rê chuột giữa là biết liền ah. Cảm ơn bạn đã giúp đỡ:-= --=0 %#^#$
Chọn ô A2 rồi vào Window\Freeze Panes => OKIE
 
Mình vừa đưa file lên tại bài #19

Bạn dùng file đó áp dụng theo hướng dẫn tại bài #24 xem sao!
TheVU01 ơi! Chúng ta đang bàn nhiều việc, nhưng thực hiện chỉ từng mỗi việc.
Việc thực hành macro lại đang là từ sheet1 chuyển các records đến 1 sheet môn học nào đó. Macro cuối đang là xóa hay chuyển 1 lúc nhiều records.
Hình như bạn lại hiểu ra thành vấn đề khác, đó là nhập từ (S1) & (S2) sang sheet1 & xóa các recors hay sao ấy!
Coi chừng lại chuyện: 'Ông nói gà, bà nói vịt' cũng nên!


Xin nhờ MOS/SMOD gộp bài này lên các bài trên, một khi tác giả topic đọc nó!
Xin Cảm ơn nhiều!
 
Lần chỉnh sửa cuối:
Vậy để mình nói rõ lại ý của mình nha
1. Ở 2sheet đầu tiên là taidaynoikhac, theo mình như là kho CSDL vậy đó. Ở sheet1 khi nhập MSSV vào thì sẽ lấy dữ liệu từ trong kho đó ra, nhưng cũng có đôi lúc sửa chữa lại các dữ liệu trong kho đó, nên mình muốn những dữ liệu vừa sửa chữa trong kho đó sẽ được tự động cập nhật ở sheet1 đó bạn.
2. Là phần như bạn ChanhTQ@ nói đó, từ sheet1 chuyển các records đến 1 sheet học nào đó, và có thể chuyển hoặc xóa 1 lúc nhiều records đó bạn, có thể túm lại là nếu ở cột môn học ở sheet1 có dấu X thì sinh viên đó sẽ có tên ở sheet mh tương ứng, không có dấu X thì sẽ không có tên (có thể là lúc đầu có dấu X nhưng bị xóa đi).
Uhm bạn ChanhTQ@ ơi chắc bạn đã hiểu nhầm ý của mình phần bị lỗi mới là khi dùng đoạn code mới nhất của bạn ở #18 thì khi insert hoặc xóa đi 5 dòng mới có nghĩa là khi copy 5 hàng ngang cũ rồi insert copies cell hoặc delete 5 hàng ngang thì báo lỗi ngay đoạn code
ShName = Choose(Target.Column - 14, "QLHS", "THESV", "mh1", "mh2", "mh3", "mh4", _
"mh5", "mh6", "mh7", "mh8", "mh9", "mh10", "mh11", "mh12", "mh13", "mh14", "mh15" _
, "mh16", "mh17", "mh18", "mh19", "mh20", "mh21", "mh22", "mh23", "mh24", "mh25") này đó)(&&@@)(&&@@
 
Lần chỉnh sửa cuối:
Mấy bạn đâu hết trơn rồi hic...
 
Bạn ChanhTQ@ ơi mình đang dùng đoạn code của bạn ở 318 khi insert hoặc xóa đi 5 dòng mới có nghĩa là khi copy 5 hàng ngang cũ rồi insert copies cell hoặc delete 5 hàng ngang thì báo lỗi ngay đoạn code
ShName = Choose(Target.Column - 14, "QLHS", "THESV", "mh1", "mh2", "mh3", "mh4", _
"mh5", "mh6", "mh7", "mh8", "mh9", "mh10", "mh11", "mh12", "mh13", "mh14", "mh15" _
, "mh16", "mh17", "mh18", "mh19", "mh20", "mh21", "mh22", "mh23", "mh24", "mh25").
Bạn giúp mình với
 
Bạn ơi mình đang dùng đoạn code ở #18 khi insert hoặc xóa đi 5 dòng mới có nghĩa là khi copy 5 hàng ngang cũ rồi insert copies cell hoặc delete 5 hàng ngang thì báo lỗi ngay đoạn code
ShName = Choose(Target.Column - 14, "QLHS", "THESV", "mh1", "mh2", "mh3", "mh4", _
"mh5", "mh6", "mh7", "mh8", "mh9", "mh10", "mh11", "mh12", "mh13", "mh14", "mh15" _
, "mh16", "mh17", "mh18", "mh19", "mh20", "mh21", "mh22", "mh23", "mh24", "mh25").
Bạn giúp mình với

Bạn phải viết câu có tân ngữ chứ;
Ví dụ: Khi tôi xóa đi 5 dòng bao gồm từ A4:A9 tại sheets("Sheets") . . .

Chứ bạn viết vậy, chỉ có bạn hiểu thôi & tốn thời gian cả của bạn nữa đó!

". . .khi insert hoặc xóa đi 5 dòng mới có nghĩa là khi copy 5 hàng ngang cũ rồi insert copies cell hoặc delete 5 hàng ngang thì báo lỗi ngay đoạn code . . ."
Bạn từ từ thôi, bạn Inert thì insert cái gì vô cái gì vậy?
Xóa đi 5 dòng, thì xóa 5 dòng ở trang tính nào, dòng cụ thể nào?
Copy 5 hàng cũ là copy những hàng nào đem đến đâu, chép vô đâu(?)
. . . .
Thú thật đến giờ, với mình như mới toanh vậy, quên sạch cả rồi í chứ!
Đoạn code thì đang bài #18 vậy dữ liệu bạn đang áp dụng ở bài nào vậy!

Xin chào!
 
Mình xin lỗi chắc là mình quá vội vàng và mình nhờ bạn quá nhiều việc, nhưng không hỏi trên này trên này mình cũng không biết hỏi ai nữa, mong sẽ được các bạn giúp đỡ.

Minh đang sử dụng dữ liệu trong file đính kèm đó. Khi làm việc ở sheet1 ta insert hoặc delete 1 hàng ngang bất kỳ ví dụ như hàng ngang số 3 thì nó báo lỗi "run-time error '94' Invalid use of Null", debug thì nó tô vàng ngay đoạn code ShName = Choose(Target.Column - 14, "QLHS", "THESV", "mh1", "mh2", "mh3", "mh4", _
"mh5", "mh6", "mh7", "mh8", "mh9", "mh10", "mh11", "mh12", "mh13", "mh14", "mh15" _
, "mh16", "mh17", "mh18", "mh19", "mh20", "mh21", "mh22", "mh23", "mh24", "mh25").
Và khi ta copy 5 hàng ngang ví dụ như từ hàng ngang số 10 đến số 15 và
insert copies cell vào hàng ngang số 3 thì cũng báo lỗi như trên vậy đó.
Tại vì mình cần số liệu tổng cộng ở phía dưới nên khi nhập dữ liệu hết các hàng ngang thì mình thường phải insert thêm hàng ngang để nhập tiếp, bạn có cách nào tiện lợi hơn bạn chỉ giúp mình với. Cảm ơn bạn rất nhiều@$@!^%@$@!^%:-=
 

File đính kèm

Lần chỉnh sửa cuối:
Tạm thời bạn thêm vài dòng lệnh như sau, thử nha:

(+) Phải chuột vô tên 'Sheet1', chọn dòng cuối để mở cửa sổ VBE;
(+) Thêm dòng lệnh như sau để có được như dưới đây
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
 [B]On Error GoTo Loi_WSh[/B]  [COLOR=Blue]'<= Dòng thêm mới'[/COLOR]
 Dim Rng As Range, sRng As Range, Clls As Range
' . . . . . '
(+) Thêm các dòng lệnh vô cuối macro, để sau khi thêm, chúng ta có đoạn cuối macro như sau:
Mã:
' . . . . . . . . '
End If [COLOR=Blue]'Các dòng tô đâm dưới đây là mới cần phải thêm'[/COLOR]
[B]Err_WSh:            Exit Sub
Loi_WSh:
    Select Case Err
    Case Is <> 94
        MsgBox Error, , Err
    End Select
    Resume Err_WSh[/B]
End Sub
Chúng có tác dụng loại trừ lỗi 94.

Chờ tin từ bạn.
 
Mình đã thử thêm vào những đoạn lệnh ở trên, mỗi lần làm giống như mình nói ở bài #32 thì nó không báo lỗi nữa nhưng mà nó đứng luôn không làm gì được hết luôn bạn ơi. Mình có gửi kèm theo file đã thêm các đoạn ở trên nè, bạn xem lại giúp mình nha, thank bạn nhiều nhiều-=.,,-=.,,-=.,,.
Chúc bạn cả tuần vui vẻ, thuận lợi:-=:-=
 

File đính kèm

#22: Và khi ta copy 5 hàng ngang ví dụ như từ hàng ngang số 10 đến số 15 và insert copies cell vào hàng ngang số 3 thì cũng . . . .

Có phải bạn muốn copy 6 hàng từ hàng thứ 10 & đem chúng dán lên hàng 4, phải không?
Mình làm trơn tru mà! - Không có tý lỗi nào sất!

Trong hàng thú 3 của bạn tại sheet1 có các ô trộn với hàng trên; Bạn dán vô đấy thì làm sao còn là 1 trang tính bình thường được; Nó báo lỗi là may cho bạn rồi!
Nếu không báo lỗi thì dữ liệu của bạn thành đồ vứt đi ấy chứ, ai mà xài tiếp được nữa chừ!

:-= --=0 &&&%$R !$@!!
 
Cái copy vô hàng thứ 3 là mình chỉ ví dụ như là 1 hàng ngang vậy thôi bạn ơi, bạn thử vào file mình mới đính kèm ở trên delete 1 hàng ngang bất kỳ thử xem, sau khi delete hoặc insert 1 hàng ngang bất kỳ là nó bị đứng luôn mà. Tương tự khi copy nhiều hàng ngang rồi đặt vào 1 hàng ngang bất kỳ là nó bị đứng ah. Bạn xem lại giúp mình nha.
 
Lần chỉnh sửa cuối:
Cái copy vô hàng thứ 3 là mình chỉ ví dụ như là 1 hàng ngang vậy thôi bạn ơi,. . .

Nói bạn đừng giận, chứ bạn vô trách nhiệm với ví dụ của bạn thật đó.
Có phải dòng nào trên trang tính cũng giống dòng nào đâu mà bạn muốn viết sao thì viết?!
Nhất là bạn đang làm việc tại 1 cơ sở khoa học, mà ở đó theo mình biết, độ chuẩn xác & tính khoa học lúc nào cũng cao hơn mặt bằng cộng đồng dân trí bất kỳ tỉnh thành nào trong cả nước.

bạn thử vào file mình mới đính kèm ở trên delete 1 hàng ngang bất kỳ thử xem, sau khi delete hoặc insert 1 hàng ngang bất kỳ là nó bị đứng luôn mà. Tương tự khi copy nhiều hàng ngang rồi đặt vào 1 hàng ngang bất kỳ là nó bị đứng ah. Bạn xem lại giúp mình nha.
Trước khi viết bài trên, mình đã thử bằng chính file đó rồi, đánh dấu nguyên vài dòng & xóa, củng như copy 1 số dòng tứ sheets("TaiDay") qua vẫn không có lỗi như bạn nói.

. . . . . thôi, Bye vậy.
 
Nếu như không bị gì thì mình cũng không phải mất công hỏi hoài như vậy đâu. Dù sao cũng cảm ơn bạn rất nhiều.
 
Không phải đâu, bạn ChiBi à!

Bỏ thử dòng lệnh "Application.ScreenUpdating = False"

Mình mường tượng ra sao rồi;

TheVu01 ra cửa hàng dịch vụ, hay đến máy nào TheVu01 chưa ngồi lần nào; Lấy file trên về & chạy thử ngay trên đó cái macro ấy xem sao?!

Nếu trơn tru, mình đã chẩn đúng bệnh rồi đó.
 
Web KT

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

Back
Top Bottom