添付画像の表で下記の動作を行うVBAコードを設定しています。 ① A1セルにgoto[任意セル]を入力しEnterキーを押す 例)goto [M5] *実際はバーコードスキャナを使用しgoto[任意セル]をA1に読み取る ② ①が実行されると任意セルにジャンプする ③ 任意セルにジャンプした後、A1セルに入力された英数字のgoto[任意セル]は削除される ④ ジャンプした任意セルに数値を入力しEnterキーを押すとA1セルにジャンプする ⑤A1セルにgoto[任意セル]と異なる英数字が入力された場合はクリアされ、再度A1セルが選択される。 【改善したいこと】 ④の状況で、ジャンプした任意セルで数値入力ではなく、goto[任意セル]を読み取った場合は、セルに入力されていた既存数値を変化させずに、入力された任意セルへジャンプする。という動作をしたいのですが、うまくいきません。 ジャンプする任意セルは M3~M52 N3~N52 ご教示頂ける方がいらっしゃればよろしくお願い致します。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address(False, False) <> "A1" Then Application.Goto Range("A1") Exit Sub End If If InStr(1, Target.Value, "goto") <> 0 Then v1 = 0 v1 = InStr(1, Target.Value, "[") If v1 = 0 Then Else Rng = Mid(Target.Value, v1 + 1, Len(Target.Value)) rng1 = Left(Rng, Len(Rng) - 1) Application.EnableEvents = False Target.ClearContents Application.EnableEvents = True ' 数値を入力した場合はA1セルにジャンプする If IsNumeric(rng1) Then Application.Goto Range("A1") Else ' 数値以外の場合はバーコードに設定された任意セルにジャンプする Select Case rng1 Case "M3" To "M52" ' ジャンプするセルがM3~M52の範囲内であればジャンプする Application.Goto Range(rng1) Case "N3" To "N52" ' ジャンプするセルがN3~N52の範囲内であればジャンプする Application.Goto Range(rng1) Case Else ' 上記以外の場合はA1セルにジャンプする Application.Goto Range("A1") End Select End If End If Else Application.EnableEvents = False Target.ClearContents Application.EnableEvents = True Application.Goto Range("A1") End If End Sub
Visual Basic