Trong bài viết của tôi, Quy trình ArrowKeyNav, tôi đã trình bày một Sub mà bạn có thể sử dụng để ghi đè xử lý mặc định của các phím mũi tên lên và xuống trên một biểu mẫu liên tục. Vấn đề với quy trình như tôi đã trình bày là bạn cần gọi nó từ mọi điều khiển mà bạn muốn ghi đè chức năng phím mũi tên.
Đây là những gì có thể trông giống như trong một mô-đun biểu mẫu:
Private Sub cbSupplierID_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Private Sub chkDiscontinued_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Private Sub tbID_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Private Sub tbListPrice_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Private Sub tbProductCode_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav vbKeyDown, Shift
End Sub
Private Sub tbProductName_KeyDown(KeyCode As Integer, Shift As Integer)
ArrowKeyNav KeyCode, Shift
End Sub
Có một số cách để giảm số lượng mã soạn sẵn mà chúng ta cần trong tình huống này, nhưng chúng ta sẽ đặt điều đó sang một bên cho các mục đích của bài viết này. Vì vậy, để tranh luận, hãy giả sử rằng không có cách nào để giảm số lượng mã. Với hạn chế đó, làm cách nào chúng ta có thể tăng khả năng đọc của đoạn mã trên?
Nối các dòng mã bằng ký tự dấu hai chấm
Chúng ta có thể nối nhiều dòng mã bằng ký tự dấu hai chấm (:
).
được sử dụng như một phần tử đầu cuối của ngữ pháp cú pháp để đặt tên cho mã thông báo hoạt động như một điểm đánh dấu "kết thúc câu lệnh". Nói chung, phần cuối của câu lệnh được đánh dấu bằng hoặc ký tự dấu hai chấm .
Cải thiện khả năng đọc bằng cách nối các dòng
Kỹ thuật này là thứ bạn cần phải sử dụng cẩn thận. Tuy nhiên, nếu được sử dụng một cách thận trọng, nó có thể làm tăng khả năng đọc mã của bạn.
Trong mã mẫu ở trên, mỗi Sub gọi cùng một mã chính xác:
ArrowKeyNav KeyCode, Shift
Trên thực tế, điều đó không đúng. Nếu bạn nhìn kỹ, bạn sẽ thấy rằng tbProductCode_KeyDown()
thẻ thông thường vbKeyDown
thay vì KeyCode
là đối số đầu tiên.
Tuy nhiên, sự khác biệt này rất dễ bỏ qua khi sử dụng định dạng VBA tiêu chuẩn:
Tạo sai mã trông sai
Nếu chúng ta nối các dòng bằng cách sử dụng dấu hai chấm – và điều chỉnh khoảng trắng để tất cả các lệnh gọi của chúng ta tới ArrowKeyNav
được căn trái – khi đó sự không nhất quán kết hợp ở trên nổi bật như một ngón tay cái đau trong đoạn mã dưới đây:
Khi được xem trong ngữ cảnh của các hàm và chương trình con bình thường, khối mã soạn sẵn của chúng tôi rõ ràng là khác biệt. Sự khác biệt này giúp tăng tỷ lệ tín hiệu trên nhiễu của mã của chúng tôi: