Nhấn phím tắt mà combobox không chạy. (1 người xem)

Liên hệ QC

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

Tôi tuân thủ nội quy khi đăng bài

LuuAnh980

Thành viên tiêu biểu
Tham gia
28/9/22
Bài viết
463
Được thích
106
Giới tính
Nữ
Em có 1 Form nhập liệu, khi nạp dữ liệu đầy đủ vào Listbox2 (trong phần Cutting) nhấn Alt+X thì nạp dữ liệu vào Sheet!Cat.
Ví dụ như sau:
Gõ ngày 12/1 vào Date->Gas vào Machine->01235 vào Track No->2222 vào Job->18 vào RQ No-> 1015120 vào Code->gõ 2 vào Q'Ty nhấn Enter thì dữ liệu đập vào ListBox2, và lúc nhấn phím tắt Alt+X thì lại nhảy lên Cb_Machine. Em nghĩ có thể do lúc đó Cb_Machine setfocus, nhưng nếu vậy thì lại ở ListBox1 lại không sao. Em xin đưa hình minh họa và file.
Mở Form: Ctrl+q.
Code trong file có sự giúp đỡ của anh @HieuCD , mong các anh giúp đỡ cho Form chạy mượt.LoiLB.png
 

File đính kèm

Mình không biết về phom phiếc gì, nhưng thấy đoạn "đập vào" thế này mà nhiều lân thì sợ hỏng mất ListBox2.
Cách đây mấy năm, có một nhóm người GPE thích dùng từ này để diễn tả sự ghi nhanh và hàng loạt.
Họ còn bàn làm sao đập được càng nhiều càng đã.
 
Upvote 0
Bạn @LuuAnh980 có thể chia sẽ cách gán phím tắt để gọi userform cho mình với được ?.
 
Upvote 0
Bạn @zzzsxxx01 làm như sau:
Đặt Sub gọi Form vào Module, nhấn Alt+F8->macro name hiện ra->click chọn Show_Form (trong file có nhiều Module)->click chọn Options ->gán phím tắt ->ok->thoát macro name.
 
Lần chỉnh sửa cuối:
Upvote 0
Anh @ongke0711 ơi giúp em với, em thấy anh là 1 chuyên gia về Form. Anh tạo các Form quá đẹp.
 
Upvote 0
Các anh coi dùm em, có phải file em bị như vậy không ạ.
 
Upvote 0
Sao em nhấn Alt+X không ghi dữ liệu vào sheet Cat vậy các anh???
Mong các anh giúp em với, em mò hoài không biết lỗi chổ nào ạ.
 
Upvote 0
Các anh thử mở trên máy các anh xem có bị giống em không ạ.
 
Upvote 0
Tôi thử thì thấy báo lưu
 
Upvote 0
Sao máy em khi nhấn phím tắt Alt+X thì nó nhảy lên Cb_machine như hình ạ. khong báo lưu.
Mong anh coi kỹ dùm.
 
Upvote 0
Dạ cám ơn anh @HeSanbi để em thử ạ.
Code trong ghi listbox2 hả anh???
 
Upvote 0
Em bỏ Cb_Machine.SetFocus ở cuói code ghi ListBox2, vẫn bị anh @HeSanbi ơi.
 
Upvote 0
Có anh nào thử file không bị sao nữa không ạ.
Chụp hình em xem với ạ.
 
Upvote 0
Sao em click chuột thì code ghi vào sheet!Cat, còn nhấn phím tắt thì lỗi nhảy lên cb_machine.
Mò hoài không biết tại đâu các anh ơi.
 
Upvote 0
Mã:
Private Sub ghilistbox2()
    Tb_SL.Value = Evaluate(Tb_SL.Value)
    If Tb_SL <= 0 Then
        MsgBox ("SL phai > 0"), vbInformation
        Exit Sub
    End If

    With ListBox2
        .AddItem .ListCount + 1
        .List(.ListCount - 1, 1) = Tb_Ngay: .List(.ListCount - 1, 2) = Cb_Machine: .List(.ListCount - 1, 3) = Tb_Track
        .List(.ListCount - 1, 4) = Cb_Job: .List(.ListCount - 1, 5) = TxtBP1: .List(.ListCount - 1, 6) = Cb_RQ
        .List(.ListCount - 1, 7) = Cb_Code: .List(.ListCount - 1, 8) = TxtDes: .List(.ListCount - 1, 9) = Tb_SL

        .ListIndex = .ListCount - 1 'chon gia tri cuoi cung
    End With
    Cb_Machine.SelStart = 0:     Cb_Machine.SelLength = Len(Cb_Machine.Value): Tb_Track.SelStart = 0: Tb_Track.SelLength = Len(Tb_Track.Value)
    Cb_RQ.SelStart = 0:     Cb_RQ.SelLength = Len(Cb_RQ.Value): Cb_Job.SelStart = 0: Cb_Job.SelLength = Len(Cb_Job.Value)
    Cb_Code.SelStart = 0:   Cb_Code.SelLength = Len(Cb_Code.Value)
    Tb_SL = Empty
    
End Sub
Em đã bỏ Cb_Machine.SetFocus, nhưng vẫn vậy.
Bài đã được tự động gộp:

Sao em thấy kỳ là ở trên ListBox1, khi ghi xong vào ListBox1 thì TxtThick.SetFocus mà nhấn Alt+Z ghi vào sheetRQ có bị sao đâu. Mà ListBox2 thì lại bị. Không hiểu nỗi.
 
Lần chỉnh sửa cuối:
Upvote 0
Không hiểu sao, cứ chuyển qua control nào mà SetFocus là cũng bị lỗi hết, chứ chẳng lẻ nhập xong lại nhấp chuột vào chọn Cb_Machine để nhập tiếp.
Mong các anh xem sai chổ nào ạ.
 
Upvote 0
Bạn bỏ các lệnh SelStart, SelLength đi, chúng không có ý nghĩa gì cả
 
Upvote 0
Cám ơn 2 anh @HeSanbi@ongke0711 , để em thử.
Bài đã được tự động gộp:

Làm như anh @ongke0711 vẫn bị, còn như anh @HeSanbi thì được, nhưng mỗi lần qua dòng khác lại phải nhấp chuột vào.
Đau đầu quá.
Bài đã được tự động gộp:

Lỗi hình như ở cái Cb_Machine, vậy mình có thể không để ở trong Form_Initialize, mà cho nó ra Cb_Change được không các anh???
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu bạn đủ thông minh thì tạo thêm cái ComboBox chung, chuột luôn ở ComboBox đó, chỉ thao tác phím Tab, Shift+Tab để chuyển các qua lại các Box
Tab sang box nào thì lấy thông số về cbx chung và Highlight Box sau khi Tab. Cứ vậy thôi.
 
Upvote 0
Làm như anh @ongke0711 vẫn bị, còn như anh @HeSanbi thì được, nhưng mỗi lần qua dòng khác lại phải nhấp chuột vào.
À tôi quên một điểm quan trọng là bạn bỏ cái DropDown của comboBox đi là được, để tránh nó vô chế độ chỉnh sửa gì đó làm phím Alt sẽ bị comboBox này bắt sang nó.

Screen Shot 2024-01-15 at 23.26.40.png


Tôi cũng quen đọc code theo kiểu từ trên xuống dưới, giờ đọc sang hàng ngang thì không quen, thấy khó thật.
 
Upvote 0
Bó tay các anh ơi, vẫn không được.
 
Upvote 0
Anh @ongke coi dùm có thể do tùy chọn trong control có gì không anh???
 
Upvote 0
Sửa mã của bạn lại:


JavaScript:
Private Sub ghilistbox2()
    If IsNumeric(Tb_SL) Then
      If CLng(Tb_SL) <= 0 Then MsgBox ("SL phai > 0"), vbInformation: Exit Sub
    Else
        MsgBox ("SL phai la Number"), vbInformation
        Exit Sub
    End If

    With ListBox2
        .AddItem .ListCount + 1
        .List(.ListCount - 1, 1) = Tb_Ngay: .List(.ListCount - 1, 2) = Cb_Machine: .List(.ListCount - 1, 3) = Tb_Track
        .List(.ListCount - 1, 4) = Cb_Job: .List(.ListCount - 1, 5) = TxtBP: .List(.ListCount - 1, 6) = Cb_RQ
        .List(.ListCount - 1, 7) = Cb_Code: .List(.ListCount - 1, 8) = TxtDes: .List(.ListCount - 1, 9) = Tb_SL

        .ListIndex = .ListCount - 1 'chon gia tri cuoi cung
    End With
    
    Cb_Machine.SelStart = 0:     Cb_Machine.SelLength = Len(Cb_Machine.Value): Tb_Track.SelStart = 0: Tb_Track.SelLength = Len(Tb_Track.Value)
    Cb_RQ.SelStart = 0:     Cb_RQ.SelLength = Len(Cb_Machine.Value): Cb_Job.SelStart = 0: Cb_Job.SelLength = Len(Tb_Track.Value)
    Cb_Code.SelStart = 0:   Cb_Code.SelLength = Len(Cb_Machine.Value)
    Tb_SL = Empty:
    Cb_Machine.SetFocus
    Cb_Machine.DropDown
End Sub

Private Sub Cb_Machine_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Select Case Shift
  Case 4:
    Select Case KeyCode
    Case vbKeyX: CmdLuuCut_Click: KeyCode = 0
    End Select
  End Select
End Sub
 
Upvote 0
Đưa câu lệnh Cb_Machine.SetFocus vào sự kiện ListBox2_KeyDown. Thêm 1 cái enter để nhập liệu tiếp thôi.
Code trong file rối rắm quá, khiến cho nhập liệu khó khăn:
- hễ vào bất cứ combobox nào là dropdown, dù chẳng muốn chọn lại.
- Tại textbox SL, phải nhấn enter mới ghi, thói quen nhấn tab sẽ báo lỗi không nhập liệu đầy đủ. Nhìn thông báo chả biết đường nào mà lần vì ngó đi ngó lại chả biết thiếu cái gì.
- Nhấn n út lưu xuống sheet thì kiểm tra Listbox có dữ liệu hay không, mắc mớ gì kiểm tra dữ liệu mấy textbox với combobox?
- Code trong mấy module (hàm của window) chả biết để làm gì.
- ...
 
Lần chỉnh sửa cuối:
Upvote 0
Em dùng dropdown để hiện ra để biết mà chọn thầy @ptm0412
Bài đã được tự động gộp:

Hàm của window là ẩn Caption của Form thầy @ptm0412
 
Upvote 0
Em dùng dropdown để hiện ra để biết mà chọn thầy @ptm0412
Hàm của window là ẩn Caption của Form thầy @ptm0412
Mấy cái ẩn đó không quan trọng lắm (mặc dù tôi ghét) (còn cái timer?)
khi nào cần chọn thì nhấn F4 và/ hoặc gõ vài ký tự. Còn những trường hợp không cần chọn lại mà xổ xuống thì nhìn rối.

Còn cái gạch đầu dòng 2 và 3?
Còn gợi ý sửa code đơn giản?

Ghét (lại ghét) việc đọc bài chỉ chăm chăm biện minh hoặc cãi mà không đọc ý chính
 
Upvote 0
Cái gạch đầu dòng 2, nếu không enter ở Tb SL thì ghi vào lítbox2 bằng cách nào nưa thầy @ptm0412 .
Cái gạch đầu dòng 3 em công nhận là thừa thầy @ptm0412 .
Bài đã được tự động gộp:

Mấy Form trước không vấn đề gì, Form này em nghi do có mấy cái combbox phụ thuộc nên ra như vậy. Chạy không mượt, có lúc combobox không có dữ liệu, phải thoát Form mở lại.
Mong các anh xem dùm.
 
Lần chỉnh sửa cuối:
Upvote 0
Cái gạch đầu dòng 2, nếu không enter ở Tb SL thì ghi vào lítbox2 bằng cách nào nưa thầy @ptm0412 .
Trong cái gạch đầu dòng đó có chữ tab. Nhiều người dùng tab chứ không dùng enter. dùng enter ít hơn.
Ngoài ra ấy câu lệnh SelStart, SelLength sẵn cho 3, 4 control cũng thừa.

Còn cái ý chính: nếu enter chạy nhập list, thì không setfocus ngay mà setfocus trong sự kiện Keydown của Listbox. Nghĩa là đứng ở SL enter 2 cái
 
Upvote 0
Trong cái gạch đầu dòng đó có chữ tab. Nhiều người dùng tab chứ không dùng enter. dùng enter ít hơn.
...
Theo tiêu chuẩn không thành văn của Form - tất cả các loại Form, không chỉ riêng Excel hay Micorsoft - thì tab và shift-tab dùng để đi tới đi lui trong form; enter dùng để kết thúc hoặc tab qua một nhóm controls.
Và tôi luôn luôn dạy users của tôi rõ về điều này.
 
Upvote 0
Em để ý thấy cứ có chỉnh sửa gì trong code thì các combobox kia lại trống trơn. Bó tay.
 
Upvote 0
Anh @HeSanbi em thay code của anh bài #32, thì các combobox Job, RQ, Code không hiện dữ liệu luôn anh ơi.
Nó cà giựt anh @HeSanbi ơi, lúc hiện dữ liệu lúc không anh ơi.
Anh có thể giúp em thử như sau, nếu lần đầu tiên anh mở lên mà chạy được, thì anh thoát file, và mở đi mở lại và thử chạy cho em 5 lần coi có phải nó cà giựt lúc có dữ liệu lúc không không ạ.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bạn @zzzsxxx01 mở thử trên máy bạn 5 lần chạy coi có bị như mình không .
Nhờ các anh Test dùm em ạ.
 
Upvote 0
Giờ mở chạy thử thì lại được các anh ạ.
file không ổn định.
 
Upvote 0
Có 2 cách:
Một là Enter 2 lần như trên nói: Enter lần 1 tại SL ghi 1 record vào Listbox2, enter lần 2 tại Listbox2 thì set focus. Nếu không enter lần 2 thì Alt X, cuối sub lưu Listbox2 xuống sheet thì thêm Setfocus.
Hai là vĩnh biệt alt X. Enter 3 lần: Lần 1 tại tại SL ghi 1 record vào Listbox2, enter lần 2 tại Listbox2 thì setfocus cho nút nhấn Lưu, enter lần 3 tại nút nhấn thì ghi xuống sheet.
Mọi sự không nên cưỡng cầu.
 
Upvote 0
Form Nó dở chứng thầy @ptm0412 ơi, lúc chạy được lúc không chạy đươc.
Lỗi nó như sau: gõ ngày vào Tb_Ngay->tab->hiên Cb_Machine->chọn trong Cb_Machine->goc số vào Tb_Track->tab->tơi Cb_Job thì nó xổ ra 1 dong trắng, mà Cb_Job trắng thì Cb_RQ, Cb_Code cũng trắng.
Nói chung Fỏm chạy không ơn định Thầy Mỹ ơi.
Bài đã được tự động gộp:

Lỗi đây Thầy Mỹ ơi.loipoi.png
 
Lần chỉnh sửa cuối:
Upvote 0
Xóa Listbox2 vẽ lại. Hiện tại Listbox bị hư không focus được, click không ăn, bàn phím không ăn.
Nhớ vẽ lại phải kiểm tra tab index liền kề txtSL
Dùng cách 1 ở bài 44:
từ txt ngày, tab để di chuyển, mũi tên lên xuống để chọn nếu là combobox, điền SL xong nhấn tab (ghi list), nhấn tiếp enter (listbox đang focus) sẽ chuyển focus sang cb_machine, nhập liệu tiếp
Được 2, 3 record thì thay vì nhấn enter tại listbox, nhấn alt X để lưu


File dưới đây tôi sửa duy nhất 1 việc sao cho phím tắt hoạt động mà không lỗi "trắng xóa". Còn những code còn lại tôi vẫn thấy ghét nên không đụng vào.
Còn ít nhất 1 chuyện thấy ghét, đó là khi gõ text vào txt SL, báo lỗi mà phải click chuột vào ô để sửa. Lẽ ra phải sử dụng sự kiện BeforeUpdate để cancel text, bắt gõ lại. Cái này khi tôi test bị lỗi nên đã sửa.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em có 1 Form nhập liệu, khi nạp dữ liệu đầy đủ vào Listbox2 (trong phần Cutting) nhấn Alt+X thì nạp dữ liệu vào Sheet!Cat.
Ví dụ như sau:
Gõ ngày 12/1 vào Date->Gas vào Machine->01235 vào Track No->2222 vào Job->18 vào RQ No-> 1015120 vào Code->gõ 2 vào Q'Ty nhấn Enter thì dữ liệu đập vào ListBox2, và lúc nhấn phím tắt Alt+X thì lại nhảy lên Cb_Machine. Em nghĩ có thể do lúc đó Cb_Machine setfocus, nhưng nếu vậy thì lại ở ListBox1 lại không sao. Em xin đưa hình minh họa và file.
Mở Form: Ctrl+q.
Code trong file có sự giúp đỡ của anh @HieuCD , mong các anh giúp đỡ cho Form chạy mượt.View attachment 298445
Một số code mình viết nhưng hình như không phải cho file và form nầy
Xây dựng form, đầu tiên phải mô tả chi tiết quy trình nhập liệu và xử lý thể hiện mối quan hệ giữa các thành phần trong form, lúc đó mới viết code chạy tạm ổn được
 
Upvote 0
Dạ code của anh Hiếu là làm dùm cho 3 combobox phụ thuộc, rồi em ghép vào Form của em ạ. Xin lỗi anh Hiếu.
Form của thầy Mỹ cũng có vấn đề ạ, khi em xóa Form của em đi, em chép Form của thầy vào cũng bị trắng combobox ạ.
Thôi nhập liệu trên sheet luôn cho nó lành ạ.
 
Upvote 0
Form của thầy Mỹ cũng có vấn đề ạ, khi em xóa Form của em đi, em chép Form của thầy vào cũng bị trắng combobox ạ.
Nếu chạy trên file của tôi thì có lỗi không? Kết luận là tại form hay tại file? Nếu không kết luận được thì đúng là "nhập liệu trên sheet luôn cho nó lành"
 
Upvote 0
Chạy trên file của thầy Mỹ cũng lỗi thầy ơi.
Bó tay.
Nhập trên sheet thôi.
 
Upvote 0
Bạn có thể nói gọn mong muốn ở cái Form đó không?
 
Upvote 0
Upvote 0
@ptm0412 em có đem file thầy lên máy cty chạy thử rồi ạ. Cũng bị lỗi combobox rỗng thầy ơi.
 
Upvote 0
Có bị luôn thầy ơi, lúc đó em chỉ chú tâm vào việc nhấn Alt+X mà không được nên em chỉ hỏi vấn đè đó, mà em thấy ngộ, chỉ chạy đôi ba lần xong thoát ra mai làm tiếp thì lại bị, nói chung file không ổn định, em có sợ đụng với code làm ẩn caption Form, em bỏ code đó đi và làm hẳn Form mới không có phần của Frame1, mà vẫn bị
Bài đã được tự động gộp:

File làm mới, không có code làm ẩn caption form, vẫn bị combobox rỗng20240118_134127.jpg
 
Upvote 0
Zời ơi. Cây đã có hoa, sắp ra quả rồi.

Đánh giá sơ bộ thì form cũng đẹp, về nước sơn thì ngon, giờ chỉ cần chọn loại gỗ nữa là ngon lành.

Thế mà lại đi cắt bớt form.

Đã lựa chọn nhập form thì phải sống chết với nó, ít nhất phải 1 tuần không ra gì thì bỏ, đây mới có ít ngày. Người ta có câu: "muộn còn hơn không" chứ có phải "sớm còn hơn không" đâu.
 
Upvote 0
Anh @cantl "giải thoát" cho em với.
Giải thoát theo cách của tớ thì nó khác lắm, nó phải buông bỏ hết mọi thứ kể cả form.

Còn thay vì sửa form thì nêu ra cái mong muốn thì dễ đồng cảm hơn. Thực tế là mới tinh nó vẫn nhanh gọn lẹ hơn là sửa cũ.

Nguyên tắc là không được nêu đích danh 1 người:
1 là người khác sẽ lướt qua và xem nhau như 1 ga nhỏ dọc đường.
2 là người nêu đích danh nhiều khi đếch biết làm.

Tớ mò thử mà chả hiểu thế quái nào nó lại khác.

1705567476348.png



"Giải thoát" là "Đi về nơi xa" không phải cùng Đan Trường mà là nhặt "Cát bụi" với Khánh Ly.




1705567504742.png
 
Upvote 0
Hãy là "Cát Bụi Cuộc Đời" đi anh @cantl.
"Cuộc đời là bao hãy mến thương nhau với bằng tất cả con tim để rồi một mai ta lìa xa nhân thế không lo lắng ưu buồn"
 
Upvote 0
Hãy là "Cát Bụi Cuộc Đời" đi anh @cantl.
"Cuộc đời là bao hãy mến thương nhau với bằng tất cả con tim để rồi một mai ta lìa xa nhân thế không lo lắng ưu buồn"
Là cát bụi được thì ngon, đấy là xá lợi rồi còn gì.

Còn đến lúc lìa xa thì lúc đấy mải xin Diêm Vương nhẹ tay, không vứt vào chảo dầu nên không có thời gian lo lắng ưu buồn đâu.

Giờ quay lại form, không buông bỏ được thì chiến đấu tiếp đi, kết quả râu ông cằm bà đến đâu rồi chốt hạ cho cái form đẹp đẹp để anh em tải về cắm thêm.

Phong cách code râu này của bạn rất giống tớ. --=0 --=0 --=0
 
Upvote 0
Em thì cứ lấy code của các anh trên đây giúp ghép vào, chạy được thì chạy, còn không cứ nhờ tiếp, chứ có biết đâu.
Nhưng cứ khoái "hoành tá tràng" nên mới bị tổ trác.
 
Upvote 0
Ngộ thiệt các anh ơi, sao cứ làm xong thấy chạy được rồi, chỉnh trong code một tý là lại lỗi combobox rỗng.
Đau đầu. Ví dụ thấy ghi vào sheet ngon rồi, nhưng sai vị trí cột, thế là chỉnh code cho đúng vị trí cột, mở lại file thì chạy lại lỗi combobox rỗng.
 
Upvote 0
Tôi đang xem có thể lỗi do đâu, tình cờ thấy cái biến mIsShow đặt ra chả biết để làm gì mà tới cả chục sub lôi nó ra gán giá trị và ngó.
 
Upvote 0
Ngộ thiệt các anh ơi, sao cứ làm xong thấy chạy được rồi, chỉnh trong code một tý là lại lỗi combobox rỗng.
Đau đầu. Ví dụ thấy ghi vào sheet ngon rồi, nhưng sai vị trí cột, thế là chỉnh code cho đúng vị trí cột, mở lại file thì chạy lại lỗi combobox rỗng.
Bây giờ bạn comment hết các dòng "On Error Resume Next" trong toàn bộ code đi rồi debug từ từ.

Mới bỏ cái là báo lỗi liền đây. Nó Failed rồi, lấy gì gán dữ liệu cho comboBox RQ.

Screen Shot 2024-01-18 at 23.20.48.png
 
Upvote 0
Đúng rồi, cha chả là đúng! Hình bài 45 lỗi khi đứng ở sheet Cat, hình bài 55 lỗi khi đứng ở sheet Xem
 
Upvote 0
Tôi sửa cái dòng lệnh lỗi ở trên như này thì không báo lỗi.
(Mấy vụ tham chiếu range, cell cũng không rành lắm nên có thể nó dài dòng)

Code cũ:
JavaScript:
arr = Sheet1.Range("A3", Range("C1000000").End(xlUp)).Value

==> Đổi sang code này:

JavaScript:
arr = Sheet1.Range("A3", "C" & Sheet1.Range("C" & Rows.Count).End(xlUp).Row).Value
 
Upvote 0
Tôi sửa cái dòng lệnh lỗi ở trên như này thì không báo lỗi.
đúng là chỗ này. Code lỗi do Range("C1000000").End(xlUp) không chỉ định sheet cho nó, nên mặc định sheet hiện hành.
Nguyên câu lệnh lấy range ô đầu A3 sheet này, ô cuối C78 sheet kia.
Tôi thì sửa thế này, để thấy rõ cái tật copy code mà không hiểu code

1705596863302.png

Cũng cùng 1 lỗi đó khi sửa lỗi trống combobox RQ, là lỗi trống combobox Code. Cách sửa giống vậy.

1705596798167.png

Ngoài ra tôi tô xanh lè thế này mà vẫn chạy được:

1705597145590.png
 
Upvote 0
Một đống code lặp lại cho các comboBox với các sự kiện KeyUp, MouseDown...(như hình màu xanh bác ptm0412 đề cập ở trên), bạn nên viết nó thành cái Class rồi chỉ cần gọi ở sự kiện Form_Initialize cho nó gọn, đỡ rối. Giờ cứ mỗi comboBox phát sinh là phải copy code lặp lại y chang, có khi còn có sai sót do nhiều quá.
 
Upvote 0
Một đống code lặp lại cho các comboBox với các sự kiện KeyUp, MouseDown...(như hình màu xanh bác ptm0412 đề cập ở trên), bạn nên viết nó thành cái Class rồi chỉ cần gọi ở sự kiện Form_Initialize cho nó gọn, đỡ rối. Giờ cứ mỗi comboBox phát sinh là phải copy code lặp lại y chang, có khi còn có sai sót do nhiều quá.
mIsShow khai báo và gán giá trị xong chả dùng làm gì, xóa hết quách cho trống.
 
Upvote 0
Dạ em cám ơn thầy @ptm0412 và anh @ongke0711 đã giúp em giải quyết cái Form bị lỗi, qua hơn 60 bài mới thấy cái lỗi của em. Code đó là em nhờ 1 anh viết hộ, mà khi đưa file chỉ có 1 sheet duy nhất nên ảnh chỉ để Range, em có biết và chỉ định sheet1 đầu ngoặc ( , em cứ tưởng như vậy là mặc định chỉ định sheet1 rôi, ai ngờ trong ngoặc ( cũng phải chỉ định sheet1 cho C100000 nữa. Em thì cứ sưu tầm code trên GPE, và ghép vào file thôi, chứ anh @ongke0711 mà nói em viết Class module thì bó tay, à mà các anh ơi, sao code lưu Job và lưu cut chạy rồi mà thấy rỏ màn hình giựt, mặc dù em có cài Application SreenUpdating. Một lần nữa em Cám ơn thầy @ptm0412 và anh @ongke0711 nhiều.
Mong các anh hỗ trợ Form chạy cho tốt ạ.
 
Upvote 0
Nói về tối ưu code, tôi không sửa nhưng chỉ ra chỗ không hợp lý và giải pháp thôi:
1. Tách riêng 2 sub create list cho RQ và Code thì có vẻ được rồi, nhưng sinh ra chuyện arr của sheet1 phải tạo nhiều lần. Nếu trong sự kiện của job (có arr sẵn), tạo list cho RQ luôn trong sự kiện thì không phải tạo arr lần 2. Tương tự là sự kiện của RQ.
2. Tạo sẵn 3 Dic để đó rồi mãi sau đó mới xài, Dic có giá trị rồi lại để đó, mãi sau đó mới xài; nên phải khai báo public. Phí của giời. Làm như (1) thì khi nào cần mới tạo Dic.
3. Khi vừa gán list cho combobox Job xong, gán luôn giá trị ban đầu cho nó = List(0), thế là 1 loạt sự kiện phía sau được kích hoạt.
4. Nếu chọn bằng phím mũi tên tức là kích hoạt KeyUp, KeyDown, các sự kiện phía sau cũng được chạy.

Làm được như vậy thì vừa nhanh vừa gọn code.
 
Upvote 0
Thầy @ptm0412 nói thì em biết vậy thôi, chứ em mà viết code được như vậy " chết liên".
 
Upvote 0
Upvote 0

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

Back
Top Bottom