[[20020831221957]] 『入力後指定先のセルへ移動するマクロ』(yosi) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『入力後指定先のセルへ移動するマクロ』(yosi)

マクロによるセルに入力実行後指定先のセルへ移動し次の入力待ちの方法


 みやほりんが 未解決ログ解消を目的に 2006/03/02 20:30 ごろ、投稿しました。
 トピ主の[yosi]さんの投稿は2002/08/31 22:19:57 でした。
 
任意のセルへの移動をマクロで試作してみました。汎用品を目指しました。 
自動セル移動を行いたいシートとは別に移動セル設定用のシートを用意します。
	A	B
1		設定
2	移動セル	A2,A4,B2,C2,E2,A10,A12,B10,C10,E10
3	区切文字	,
 
区切り文字は任意の文字列一文字、移動セルはセルアドレスを区切り文字で区切って
記入します。
 
自動セル移動を行いたいシートの見出しを右クリック、「コードの表示」を選択して
VisualBasicEditor起動、コードウィンドウへ下記を貼り付け。
 
 
 Const Ctr As String = "設定": Rem 設定を記入するシート名
 Const Lst As String = "B2":   Rem 移動セルを記入するセル
 Const Dlmt As String = "B3":  Rem 記入文字列のデリミタ(区切り文字)を設定するセル
 Dim MyNum As Long
 Dim LstNum As Long
 Dim MyAdr() As String, StrAdr As String
 Private Sub Worksheet_Activate()
     Rem 【シートアクティブ時に設定用シートを元に移動順番設定】
     Rem 変数初期化、移動セルの先頭セルを選択
     MyAdr() = Split(Worksheets(Ctr).Range(Lst).Value, Worksheets(Ctr).Range(Dlmt).Value)
     MyNum = 0
     StrAdr = ""
     LstNum = UBound(MyAdr())
     On Error Resume Next
     With Me
     Rem 移動セル設定のチェック 不適当なものはEnd Withまでで除外。
          For i = 0 To LstNum
             With .Range(MyAdr(i))
                 If Err.Number = 1004 Then
                     Rem セルアドレスと認識できないときのエラー処理
                     MsgBox "セルアドレス[ " & MyAdr(i) & " ]はアドレスとして不正です" & Chr(13) & _
                            "選択セルから除外します。必要ならば設定を修正してください。"
                     Err.Clear
                 ElseIf .Count > 2 Then
                     Rem 複数セル範囲と認識されるときの処理
                     MsgBox "セルアドレス[ " & MyAdr(i) & " ]は複数セルのため不正です" & Chr(13) & _
                            "選択セルから除外します。必要ならば設定を修正してください。"
                 Else
                     StrAdr = StrAdr & MyAdr(i) & " "
                 End If
             End With
         Next i
     End With
     Rem 配列再設定
     StrAdr = Left(StrAdr, Len(StrAdr) - 1)
     MyAdr() = Split(StrAdr)
     LstNum = UBound(MyAdr())
     With Me
     Rem 入力セルのみロック解除でシート保護、非ロックセル選択抑制
         .Unprotect
         .Cells.Locked = True
         For i = 0 To LstNum
             With .Range(MyAdr(i))
                    .Locked = False
             End With
         Next i
         .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
         .EnableSelection = xlUnlockedCells
     End With
     Application.EnableEvents = False
     Rem 選択許可第一セル選択
     Me.Range(MyAdr(MyNum)).Select
     Application.EnableEvents = True
 End Sub

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     Rem 移動セルを配列変数MyAdr()で既定
     If Target.Count > 1 Then
         MsgBox "複数セル選択不可"
     Else
         If MyNum = LstNum Then
             MyNum = 0
         Else
             MyNum = MyNum + 1
         End If
     End If
     Application.EnableEvents = False
     Rem 変数MyNumで規定されるセルを選択
     Me.Range(MyAdr(MyNum)).Select
     Application.EnableEvents = True
 End Sub
 
エラー処理まで考えたら思ったより行数が多くなった・・・
 
【過去ログ】検索ワード[セル 入力後 移動 Enter]より抜粋。
 
[[20020510221453]] 『セルに入力後指定したセルに移動できますか。』(hiro2)
[[20020705134004]] 『セルの保護を解除した部分にのみセルが移動』(こつこ)
[[20030124155339]] 『リターンキーによるセルの移動を替えたい』(さちの)
[[20030430220750]] 『入力後、特定のセルに移動するようにしたい』(トム)
[[20031116181400]] 『enterを押下するとどこに移行するか』(はげ)
[[20031217141206]] 『アクティブセルの移動』(たか)
[[20040127170335]] 『入力後のセルへの移動を自分で決める方法』(さんきち)
[[20040214114536]] 『入力セル範囲指定』(トシ)
[[20040524175457]] 『EnterやTabで指定したセルだけに移動する方法』(ki)
[[20040611091533]] 『文字入力後、Enterを押して違うセルに飛ぶ方法』(すがやっち)
[[20040802161638]] 『エンターキーでセルの移動』(ひで)
[[20040818220406]] 『A1に入力しエンターを押すと、次はB1になって』(山口)
[[20040917090048]] 『ENTERで次の行へ行くように出来ますか』(みず)
[[20041116142947]] 『アクティブセルの位置』(健康診断)
[[20050109161249]] 『数字入力を左のセルからにしたい』(初心者)
[[20050525141216]] 『自動改行したいです。』(秋刀魚)
[[20050824110349]] 『入力後のアクティブセルの移動位置を変更したい』(B-DYAWAN)
[[20050901180323]] 『リターン情報って?』(ちょき)
[[20050920094816]] 『ENTERでセル右移動』(ひろし)
[[20050930171327]] 『セルの進行方向の変更』(まめ)
[[20051212143001]] 『セルの移動』(ど素人)
[[20060224112842]] 『入力後のセルの移動』(ピョン)
 
(みやほりん)(-_∂)b


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.