Excel/VBA: 特定のセルをカーソルスキップするマクロ
2018/04/22
特定のセルをスキップするのをマクロで作りました。
スキップしたいセルを指定の色を塗っておけばスキップしてくれます。帳票類などで特定のセルのみ入力を促すときに便利です。
下図のようにスキップしたいセルのところに指定の色をつけておけばスキップしてくれます。
もう少し動きがわかるように動画にしました。こんな動きをExcel/VBAで作ります。
https://www.youtube.com/watch?v=SgBK-13Y12Q
[ad#top-1]
VBAエディターの設定
通常、マクロを書く際は「挿入」-「標準モジュール」でエディタを追加しますが、今回はシートに直接書きます。
左のプロジェクトエクスプローラーから任意のシートをダブルクリックしてエディタを表示させます。
左のプルダウンメニューから「Worksheet」、右のプルダウンメニューから「SelectionChange」を選びます。
これでエディタの設定は完了です。
ソースコード
ソースコードはこちらです。
Dim previous_row As Long
Dim previous_col As Long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
r = Target.Row
c = Target.Column
If Target.Interior.ThemeColor = xlThemeColorDark1 Then
If r > previous_row And c = previous_col Then
Do While Cells(r, c).Interior.ThemeColor = xlThemeColorDark1
r = r + 1
Loop
ElseIf r < previous_row And c = previous_col Then Do While Cells(r, c).Interior.ThemeColor = xlThemeColorDark1 r = r - 1 Loop ElseIf r = previous_row And c > previous_col Then
Do While Cells(r, c).Interior.ThemeColor = xlThemeColorDark1
c = c + 1
Loop
ElseIf r = previous_row And c < previous_col Then
Do While Cells(r, c).Interior.ThemeColor = xlThemeColorDark1
c = c - 1
Loop
End If
Cells(r, c).Select
End If
previous_row = r
previous_col = c
End Sub
最初の2行は前のセルの位置を記憶させるためのパブリック変数です。
Dim previous_row As Long Dim previous_col As Long
前のカーソルの位置を記憶しておくための変数です。前のカーソル位置を知ることでどっち側にスキップさせるか変える必要があるので。
Excelで作った帳票類などに入力する際に便利かと思います。
[ad#ad-1]
スポンサーリンク


