W moim artykule, The ArrowKeyNav Routine, przedstawiłem Sub, którego można użyć do zastąpienia domyślnej obsługi klawiszy strzałek w górę i w dół w formularzu ciągłym. Problem z procedurą, którą przedstawiłem, polega na tym, że musisz wywołać ją z każdej kontrolki, w której chcesz nadpisać funkcjonalność klawisza strzałki.
Oto jak to może wyglądać w module formularza:
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
Istnieje kilka sposobów na zmniejszenie ilości kodu, którego potrzebujemy w tej sytuacji, ale na potrzeby tego artykułu odłożymy to na bok. Tak więc, ze względu na argument, załóżmy, że nie ma sposobu na zmniejszenie ilości kodu. Biorąc pod uwagę to ograniczenie, jak możemy zwiększyć czytelność powyższego kodu?
Łączenie wierszy kodu za pomocą znaku dwukropka
Możemy połączyć wiele wierszy kodu za pomocą znaku dwukropka (:
).
jest używany jako końcowy element gramatyki składniowej do nazwania tokena który działa jako znacznik końca instrukcji. Ogólnie rzecz biorąc, koniec instrukcji jest oznaczony jako lub znak dwukropka .
Poprawa czytelności poprzez łączenie wierszy
Ta technika jest czymś, czego należy używać ostrożnie. Ale jeśli jest używany rozważnie, może zwiększyć czytelność twojego kodu.
W powyższym przykładowym kodzie każdy Sub wywołuje dokładnie ten sam kod:
ArrowKeyNav KeyCode, Shift
Właściwie to nieprawda. Jeśli przyjrzysz się uważnie, zobaczysz, że tbProductCode_KeyDown()
procedura przechodzi vbKeyDown
zamiast KeyCode
jako pierwszy argument.
Tę różnicę można jednak łatwo przeoczyć przy użyciu standardowego formatowania VBA:
Zła kod wygląda źle
Jeśli połączymy linie za pomocą dwukropków – i dostosujemy odstępy tak, aby wszystkie nasze wywołania ArrowKeyNav
są wyrównane do lewej - wtedy niespójność, która wtapia się w powyższe, wyróżnia się jak ból kciuka w poniższym kodzie:
Patrząc w kontekście normalnych funkcji i podprogramów, nasz blok kodu standardowego wyraźnie się wyróżnia. To rozróżnienie pomaga zwiększyć stosunek sygnału do szumu naszego kodu: