dyno2316 ロヒミフ perl VBA Excel 秀丸

ラベル ExcelVBA:SelectionChange の投稿を表示しています。 すべての投稿を表示
ラベル ExcelVBA:SelectionChange の投稿を表示しています。 すべての投稿を表示

ExcelVBAイベント

ExcelVBAイベント-数字キーの押下でカーソル移動

(1) 数字キー押下でイベント発生

該当ワークシートをダブルクリックして
「Private Sub Worksheet_SelectionChange(ByVal Target As Range)」

から始まるコードを記述
[SelectionChange イベント]は、ワークシートで選択範囲を変更したときに

発生します。Target:新しい選択範囲が格納されている

(コードの概要)
カーソルが動いたときにイベントが発生するので、
移動先(Target.Column) が A[1],B[2],C[3],G[7],H[8]列 の時には、

Onkeyを設定してキーの入力制御を行う
移動先(Target.Column) が A,B,C,G,H列 以外の時には、Onkeyを設定を解除する

「Onkey」で呼び出すサブルーチンは、標準モジュールとして記述し、
項目をチェックするときは、ActiveCellを使う

(Targetは移動先を示しているので、右となりになっている)

'

'
' A列[1]「第1項目」の単体チェック
'
If ActiveCell.Column = 1 Then
  If Index >= 1 And Index <= 6 Then

   'continue
  Else MsgBox ("第1項目は 1~6まで")
   'Cells(ActiveCell.Row, ActiveCellactivecell.Column).Select
    errflg = 1
  End If
End If
(2) 複数文字入力の場合 (1)と同様に該当ワークシートをダブルクリックして、
「Private Sub Worksheet_Change(ByVal Target As Range)」
を記述
[Change イベント] セルが変更された時に発生します。
Target:変更された範囲が格納されている

(コードの概要) 値が変更されたときにイベントが発生するので、
変更したセルの列番号(Target.Column) で項目チェックを行う
'
' D列[4]「製品番号」の単体チェック
'
If Target.Column = 4 Then
If Len(Target.Value) <> 7 Then
MsgBox ("製品番号が7桁になっていません")
Cells(Target.Row, Target.Column).Select
End If
End If

-------------------------------------------------------------
(1),(2)を組み合わせて、1桁入力では「Enter」なしに次のセルに移動
複数文字入力では「Enter」で移動を実現する