エクセルのvba で指定した数字が選択しているセルに入力されたときに2行下にアクティブセルさせるといったことを繰り返したいのですが可能でしょうか?

Excel68閲覧

ベストアンサー

0

その他の回答(2件)

0

EnterでB2,B4,B6を移動します。 シートのコードネームがSheet1の場合です。 Sheet1でない場合は、'[ThisWorkbook]の所のSheet1を変更してください。 Const kys As String = "B2,B4,B6,B2" 'キーの移動(ループの場合は最後は最初) '[対象Sheet] '対象シートが選ばれた時の処理 Sub Worksheet_Activate() Worksheet_SelectionChange ActiveCell End Sub '他のシートが選ばれた時の処理 Sub Worksheet_Deactivate() resetEnter End Sub 'Enter設定 Sub setEnter() Application.OnKey "~", Me.CodeName & ".onEnter " Application.OnKey "{ENTER}", Me.CodeName & ".onEnter" End Sub 'Enter設定解除 Sub resetEnter() Application.OnKey "~", Null Application.OnKey "{ENTER}", Null End Sub 'セルの移動 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(ActiveCell, Range(kys)) Is Nothing Then setEnter Else resetEnter End If End Sub 'Enterが押された時の処理 Sub onEnter() Static dic As Object Dim d As Variant Dim i As Integer If dic Is Nothing Then Set dic = CreateObject("Scripting.Dictionary") d = Split(kys, ",") For i = 0 To UBound(d) - 1 dic(d(i)) = d(i + 1) Next End If If dic.exists(ActiveCell.Address(0, 0, 1)) Then Range(dic(ActiveCell.Address(0, 0, 1))).Select End Sub '[ThisWorkbook] '対象SheetのCodeNameがSheet1だった場合 Private Sub Workbook_Activate() Sheet1.Worksheet_Activate End Sub Private Sub Workbook_Deactivate() Sheet1.Worksheet_Deactivate End Sub

0

イベントコードです。 機能:B2に入力するとB4に飛び、B4に入力するとB6に飛び、B6が入力されると終了します。 メモ:追加の質問等は行っておりませんのであしからず。 Private Sub Worksheet_Change(ByVal Target As Range) For i = 2 To 6 Step 2 Range("B" & i).Select If Range("B" & i) = "" Then Wait = True Do Until Wait = False DoEvents DoEvents DoEvents Loop End If If Range("B" & i) <> "" Then Wait = False End If Next i End End Sub