[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『入力後指定先のセルへ移動するマクロ』(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.