Vô hiệu hóa phím F1 khi đang mở hộp Find and Replace

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

dskhoa

Thành viên mới
Tham gia
2/5/16
Bài viết
28
Được thích
0
Tình hình là em thường xuyên phải tìm sữ liệu và swuar liên tục.
Thao tác là Ctrl F (value cần tìm) --> ESC ---> F2 rồi sửa.
Do ngón tay em to (tay to) nên em thường xuyên bấm nhầm phím F1 --> hiện bảng help.
Em đã disable bằng VBA application.onkey "F1}"", nhưng khi đang ở dialog Find and replace thì vẫn bị dính phím F1 có hiệu lực.
Các bạn giúp mình tìm cách disable funtion key khi đang có dialog trên với ạ.
Em xin chân thành cảm ơn.
 
Tình hình là em thường xuyên phải tìm sữ liệu và swuar liên tục.
Thao tác là Ctrl F (value cần tìm) --> ESC ---> F2 rồi sửa.
Do ngón tay em to (tay to) nên em thường xuyên bấm nhầm phím F1 --> hiện bảng help.
Em đã disable bằng VBA application.onkey "F1}"", nhưng khi đang ở dialog Find and replace thì vẫn bị dính phím F1 có hiệu lực.
Các bạn giúp mình tìm cách disable funtion key khi đang có dialog trên với ạ.
Em xin chân thành cảm ơn.
Bạn đang hướng người ta đi theo hướng mà bạn cho là đúng (nhưng thật ra là trật lất)
Tại sao phải viết code disable phím F1 khi mở hộp Find and Replace? Tại sao bạn không viết code tự đông hóa luôn quá trình tô màu đỏ ở trên?
 
Tạo ra 1 Form để sửa dữ liệu cho khỏe hơn không?
Lúc đó ngón tay của bạn chỉ bé như chân chuột mà thôi.
Chúc vui!
 
Bạn đang hướng người ta đi theo hướng mà bạn cho là đúng (nhưng thật ra là trật lất)
Tại sao phải viết code disable phím F1 khi mở hộp Find and Replace? Tại sao bạn không viết code tự đông hóa luôn quá trình tô màu đỏ ở trên?
đơn giản là mình không biết viết code bạn ơi. Mấy cái disable funtionkey là mình chép trên mạng và chỉ hiểu đến đó. Cái bạn tô màu đỏ không phải là thao tác lặp lại chính xác mà là tương đối thôi vì có nhiều value gần giống nhau, mình phải chọn value nào cần sửa. Tuy nhiên thông thường nhất vẫn là Ctrl F (value: Phần này chỉ là một phần trông giá trị của cell. VD mypara và mypara 500 mình đều sẽ tìm value "myp") --> esc -- > sang 2 ô rồi F2 sửa (cộng thêm số lượng). nhiều khi bấm esc sau khi bấm phím F2 và bị nhầm sang F1 thì nó hiện cái bảng help.
Bạn có cách nào giúp mình với.

File mình đang làm đây ạ,
 

File đính kèm

đơn giản là mình không biết viết code bạn ơi.
File mình đang làm đây ạ,
Bạn cần sửa số liệu trong các ngày hay sửa gì khác?
Có vẻ như tìm theo tên thuốc & sửa lại số liệu?
Bạn có thể nói rõ, biết đâu có cách khác tiện cho bạn chăng?
 
Bạn cần sửa số liệu trong các ngày hay sửa gì khác?
Có vẻ như tìm theo tên thuốc & sửa lại số liệu?
Bạn có thể nói rõ, biết đâu có cách khác tiện cho bạn chăng?
Mình có các bảng kê, mỗi bảng kê có mấy loại thuốc, mỗi loại thuốc có số lượng. Mình nhập số lượng thuốc bằng cách cộng theo ngày. Một thuốc trong ngày có thể có nhiều bảng kê có thuốc đó. Bảng kê mình phải lựa phần thuốc để nhập, các phần khác như công khám, vật tư y tế ... thì không nhập. Mình cần tối ưu (nhanh và giảm sai sót) trong nhập liệu cái này ạ. Cảm ơn bạn đã quan tâm và giúp đỡ.
 
Vậy thì bạn đừng làm tắt công đoạn;
Nên tạo ra trang tính để nhập các thuốc của từng bảng kê;
Macro sẽ tự động tổng hợp các loại thuốc cho bạn theo ngày đã ghi trong bảng kê
Có vẻ như 1 bảng kê có 1 đến vài loại thuốc khác nhau
& 1 ngày có nhiều bảng kê
Nếu đúng vậy thì bạn đưa nội dung bảng kê tại CQ bạn lên đây; Mọi người sẽ giúp bạn tạo cấu trúc CSDL & macro tổng hợp cho bạn.

Thân!
 
Vậy thì bạn đừng làm tắt công đoạn;
Nên tạo ra trang tính để nhập các thuốc của từng bảng kê;
Macro sẽ tự động tổng hợp các loại thuốc cho bạn theo ngày đã ghi trong bảng kê
Có vẻ như 1 bảng kê có 1 đến vài loại thuốc khác nhau
& 1 ngày có nhiều bảng kê
Nếu đúng vậy thì bạn đưa nội dung bảng kê tại CQ bạn lên đây; Mọi người sẽ giúp bạn tạo cấu trúc CSDL & macro tổng hợp cho bạn.

Thân!
Cảm ơn bạn đã quan tâm. Bảng kê của mình là file cứng chứ không phải là file mềm. mình phải đọc rồi nhập vào. 1 bảng kê đủ tiêu chuẩn để nhập phải có đủ chữ ký như hình dưới đây ạ.
 

File đính kèm

  • IMG_3622.JPG
    IMG_3622.JPG
    945.7 KB · Đọc: 12
Với dòng 7(chất Mipara) thì các số liệu 1.350; 20.250 & 16.200 thì tiêu đề cột của chúng sẽ là gì?
(Có nghĩa là cột nào là số liệu cần nhập & tổng hợp vậy?)
Bạn trích file ảnh mà nữa chừng xuân vậy thì tốn thời gian của nhau mà thôi.
 
Với dòng 7(chất Mipara) thì các số liệu 1.350; 20.250 & 16.200 thì tiêu đề cột của chúng sẽ là gì?
(Có nghĩa là cột nào là số liệu cần nhập & tổng hợp vậy?)
Bạn trích file ảnh mà nữa chừng xuân vậy thì tốn thời gian của nhau mà thôi.
Xin lỗi bạn, mình không chú ý đến đoạn tiêu đề. Mấy cái đó làm giá tiền mỗi viên, tổng tiền và tổng tiền quỹ BHYT thanh toán. Mấy cái đó mình không nhập, mình chỉ nhập số lượng theo thuốc thôi ạ. trong hình là Mypara (Paracetamol 500mg) dạng viên sủi, số lượng 15 viên, dòng số 8 là Mypara 500 (Paracetamol 500mg) dạng viên nén, số lượng 15 viên ạ.
 
Lần chỉnh sửa cuối:
F1 là phím đặc biệt. Tuy nó có thể sử dụng sendkey nhưng khi gọi nó lại chạy một file không phải excel.exe nên sendkey cơ bản để disable hoàn toàn nó là không thể. Như F2, F3... bạn dễ dàng làm đc vì nó tác động trên excel luôn.
 
Lần chỉnh sửa cuối:
Có ai giúp mình với ạ ? Mình vẫn chưa tìm ra cách :(
 
Thay vì vô hiệu hoá F1 bạn dùng một phím khác thay phím F2 ơ vị trí tiện lợi hơn, hoặc dùng chương trình hotkey chỉnh lại.

Ngoài ra bạn có một lựa chọn khác.
Trong sheet bạn cần Find and Replace bạn copy code dưới vào. Đoạn code dưới hoạt động khi bạn chọn ô nào cần sửa thì nó tự động F2 luôn nên bạn không cần nhấn F2. Còn khi bạn không cần Find Replace nữa thì xóa nó đi, hoặc sử dụng một điều khiển disable, enable code.
PHP:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    SendKeys "{F2}"
End Sub
 
Lần chỉnh sửa cuối:
Ngón tay to?
Khi làm việc với Excel thì bạn liên tục nhấn các phím khác nhau. Nếu ngón tay to thì khi nhập liệu bạn liên tục phải sửa lại? Vd. gõ số 12345 thì phải gõ và sửa 10 lần? Và lần sửa luôn phải rất thận trọng để ngón tay to không vào cuộc? Thế thì cũng thận trọng khi gõ F2. Chả nhẽ khi nhập liệu liên tục thì ngón tay to luôn gõ chính xác còn khi đối đầu với F1 thì run rẩy?

Giả sử bạn vô hiệu hóa F1. Tức ngón tay to nhấn chệch sang F1 thì chả có gì sẩy ra. Nhưng bạn vẫn phải gõ lần nữa để có F2. Nhưng lần này ngón tay to lại chệch sang F1. Lại thử tiếp? Như vậy vấn đề không phải nằm ở F1. Nó nằm ở gõ thận trọng, chính xác. Vì nếu không thì cho dù vô hiệu hóa F1 thì vẫn có thể sẩy ra trường hợp gõ , 10 lần vẫn trúng F1.
 
Giải pháp hay nhất ở topic này là mua bàn phím khác , bàn phím có các phím lớn khoảng cách (bàn phím bình thường rời ngoài, ngón tay tây còn bấm tốt) - hoặc nếu dùng laptop thì thay laptop khác có phím như ý .....

hay giải pháp hay nữa là đi giải phẩu thẫm mỹ ngón tay to.. một mũi tên trúng 2 con nhạn
 
Giả sử bạn có trong A1 = A10 = "hichic".
Tôi hiểu là bạn thao tác từng bước như sau: Ctrl + F (mở cửa sổ Find) -> nhập hichic -> sẽ có 2 kết quả mà trong đó A1 đã được chọn. Nếu bạn muốn sửa A10 thì bạn chọn A10, tức ô A10 đã được chọn -> nhấn ESC (đóng Find) -> nhấn F2 để vào chế độ chỉnh sửa

Nếu thế thì cách của moctriet không được. Vì Worksheet_SelectionChange được thực hiện ở thời điểm đỏ đỏ, tức khi cửa sổ Find vẫn đang mở, tức nó sẽ nhận mọi input từ bàn phím. Lúc đó F2 được gửi tới cửa sổ của Find chứ không phải cửa sổ của sheet.

Trong thời gian tập gõ chính xác hoặc giảm cân cho ngón tay to thì:

1. Dán code sau vào vd. Module1
Mã:
Sub hichic()
    SendKeys "{F2}"
End Sub
2. Dán code sau vào module ThisWorkbook
Mã:
Private Sub Workbook_Open()
    Application.OnKey "{F1}", "hichic"
End Sub

Tức sau khi cửa sổ Find được đóng do ESC thì sheet sẽ nhận input từ bàn phím. Lúc này nếu nhấn nhầm F1 thì hichic sẽ vào cuộc và nó giả nhấn F2

Chắc bạn uống nhiều sâm quá nên ngón tay mới to như vậy. Tôi chưa thấy ai kêu vụ này, mà nhiều thằng Tây ngón tay cũng to.
 
Mải theo code kiếc cái SendKeys mình cũng biết thêm được nhiều kiến thức về nó. Nhưng lại vô ý quên mất cách khá đơn giản là không cho chương trình Help của Excel khởi động (Lúc đầu mình cố ý dùng kill nó trong task manager nhưng cũng chỉ tạm thời)

Và cách disable theo mình thấy dễ dùng nhất là:
Bạn vào folder chứa chương trình Help của Excel: Của mình là
C:\Program Files\Microsoft Office 15\root\office15
Vào đó đổi tên file CLVIEW.EXE >> CLVIEW_bk.EXE vậy là xong.
 
Không hẳn là đơn giản. Vì nếu nhấn nhầm F1 thì không có gì sẩy ra. Nhưng vẫn phải nhấn lần nữa để có F2. Cách kia là nếu nhấn nhầm F1 thì sẽ có giả nhấn F2, không cần nhấn lần thứ 2. Tóm lại là ta có 2 phím F2 :D
 
Giả sử bạn có trong A1 = A10 = "hichic".
Tôi hiểu là bạn thao tác từng bước như sau: Ctrl + F (mở cửa sổ Find) -> nhập hichic -> sẽ có 2 kết quả mà trong đó A1 đã được chọn. Nếu bạn muốn sửa A10 thì bạn chọn A10, tức ô A10 đã được chọn -> nhấn ESC (đóng Find) -> nhấn F2 để vào chế độ chỉnh sửa

Nếu thế thì cách của moctriet không được. Vì Worksheet_SelectionChange được thực hiện ở thời điểm đỏ đỏ, tức khi cửa sổ Find vẫn đang mở, tức nó sẽ nhận mọi input từ bàn phím. Lúc đó F2 được gửi tới cửa sổ của Find chứ không phải cửa sổ của sheet.

Trong thời gian tập gõ chính xác hoặc giảm cân cho ngón tay to thì:

1. Dán code sau vào vd. Module1
Mã:
Sub hichic()
    SendKeys "{F2}"
End Sub
2. Dán code sau vào module ThisWorkbook
Mã:
Private Sub Workbook_Open()
    Application.OnKey "{F1}", "hichic"
End Sub

Tức sau khi cửa sổ Find được đóng do ESC thì sheet sẽ nhận input từ bàn phím. Lúc này nếu nhấn nhầm F1 thì hichic sẽ vào cuộc và nó giả nhấn F2

Chắc bạn uống nhiều sâm quá nên ngón tay mới to như vậy. Tôi chưa thấy ai kêu vụ này, mà nhiều thằng Tây ngón tay cũng to.
Mình có 1 bảng, trong đó ô dữ liệu cần tìm là Tên thuốc C10="tên thuốc"", tên thuốc là ngẫu nhiên như abcEEE hay abcFFF abcAAA. Trong đó thao tác tìm thuốc abcFFF là Find "abc", nhấn ESC, chọn thuốc abcFFF bằng phím UP DOWN, sang 2 ô vào ô nhập số lượng, nhấn F2 để edit (cộng thêm số lượng). Có trường hợp chưa kịp bấm ESC (còn trong bảng FIND) mình đã bấm F2 và nhầm sang F1 thì bảng Help hiện ra. Bàn phím của mình khá nhỏ và phím ESC ngay liền phím F1. Nó là con này đây ạ. : http://www.tokosigma.com/?1729,en_l...e-wireless-bluetooth-keyboard-and-stand-combo

Do vậy việc dùng code bạn nói mình thấy có vẻ không khả thi cho lắm. Nhờ bạn giúp cách khác được không ạ.
 
Giả sử bạn có trong A1 = A10 = "hichic".
Tôi hiểu là bạn thao tác từng bước như sau: Ctrl + F (mở cửa sổ Find) -> nhập hichic -> sẽ có 2 kết quả mà trong đó A1 đã được chọn. Nếu bạn muốn sửa A10 thì bạn chọn A10, tức ô A10 đã được chọn -> nhấn ESC (đóng Find) -> nhấn F2 để vào chế độ chỉnh sửa

Nếu thế thì cách của moctriet không được. Vì Worksheet_SelectionChange được thực hiện ở thời điểm đỏ đỏ, tức khi cửa sổ Find vẫn đang mở, tức nó sẽ nhận mọi input từ bàn phím. Lúc đó F2 được gửi tới cửa sổ của Find chứ không phải cửa sổ của sheet.

Trong thời gian tập gõ chính xác hoặc giảm cân cho ngón tay to thì:

1. Dán code sau vào vd. Module1
Mã:
Sub hichic()
    SendKeys "{F2}"
End Sub
2. Dán code sau vào module ThisWorkbook
Mã:
Private Sub Workbook_Open()
    Application.OnKey "{F1}", "hichic"
End Sub

Tức sau khi cửa sổ Find được đóng do ESC thì sheet sẽ nhận input từ bàn phím. Lúc này nếu nhấn nhầm F1 thì hichic sẽ vào cuộc và nó giả nhấn F2

Chắc bạn uống nhiều sâm quá nên ngón tay mới to như vậy. Tôi chưa thấy ai kêu vụ này, mà nhiều thằng Tây ngón tay cũng to.

Code của anh em đã thử rồi, và trước đó em cũng đã thử code kiểu này. Em đã từng nói ởi post #11 là nó sẽ chạy một chương trình bên ngoài excel.exe, nên khi kích hoạt F1 thì nó sang cửa sổ của HelpF1 nên không thể chạy code "hichic" được, thành ra phải active lại Excel.exe đã.
Có một cách em cũng thử là track cái nút F1, nếu nó kích hoạt thì active excel.exe và chạy code xong lại kill Help trong Task Manager nhưng không thành công, vì trong quá trình Track nó tắt cả cửa sổ Find&Place, do em không có kiến thức về API nên không tinh chỉnh code được.
 
Web KT

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

Back
Top Bottom