非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Excel/VBA: 特定のセルをカーソルスキップするマクロ

      2018/04/22

特定のセルをスキップするのをマクロで作りました。

スキップしたいセルを指定の色を塗っておけばスキップしてくれます。帳票類などで特定のセルのみ入力を促すときに便利です。

下図のようにスキップしたいセルのところに指定の色をつけておけばスキップしてくれます。

 

もう少し動きがわかるように動画にしました。こんな動きをExcel/VBAで作ります。

[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]

スポンサーリンク

 - Excel, VBA