Excel VBA 質問スレッド №1556 (解決済)

入力したVBAコードが上手く動かないです。

投稿者 : VBA初心者     投稿日時 : 2023/09/07(Thu) 00:09:43     OS : Windows 11     EXCEL : Excel 2016
当方、VBA初心者で自分では解決できないため質問させて頂きます。

この度、リスト選択を設定した特定の範囲でセル入力(リストの中から選択)がされると、自動的にそのセルにロックがかかり、アクティブセルはそのまま動かない設定をしました。

セルに数字を直接入力すると、思った通りに動作してくれますが、リストから数字を選択するとアクティブセルが1つ右のセルへ移動してしまいます。

リストから数字を選択しても、アクティブセルが右に移動しないためには、どのようなコードを入力すれば良いのでしょうか?


解決策がございましたら、ご教示頂けますと幸いでございます。


宜しくお願い致します。



尚、入力したVBAコードは以下となります。

___________________________________________________

Private Sub Worksheet_Change(ByVal Target As Range) 

    Dim xRg As Range 

    On Error Resume Next 

    Set xRg = Intersect(Range("B2:F16"), Target) 

    If xRg Is Nothing Then Exit Sub 

    Target.Worksheet.Unprotect 

    If xRg.Value <> mStr Then xRg.Locked = True 

    Target.Worksheet.Protect 

    ActiveCell.Offset(0, 0).Select 

End Sub 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

If Not Intersect(Range("B2:F16"), Target) Is Nothing Then 

    Set mRg = Target.Item(1) 

     mStr = mRg.Value 

End If 

End Sub 

スポンサーリンク
[返信 1] Re : 入力したVBAコードが上手く動かないです。
投稿者 : さんこう     投稿日時 : 2023/09/07(Thu) 08:04:54
>セルに数字を直接入力すると、思った通りに動作してくれますが、リストから数字を選択するとアクティブセルが1つ右のセルへ移動してしまいます。

ご提示のような動作にはなりませんでした(逆の動作でした)。


>アクティブセルはそのまま動かない設定をしました。

どれでしょうか? 見当たりませんが...


直接入力やリストから入力したときに、アクティブセルがどのように変化するか確認してみてはいかがでしょうか。


参考になれば(イミディエイトウインドウに、アクティブセルなどのアドレスを表示します)。

Private Sub Worksheet_Change(ByVal Target As Range)
    
    Debug.Print Target.Address & " - " & ActiveCell.Address & " - ";
    
    ActiveCell.Offset(0, 0).Select
    Debug.Print ActiveCell.Address & " - ";
    
    Target.Select
    Debug.Print ActiveCell.Address

End Sub

[返信 2] Re : 入力したVBAコードが上手く動かないです。
投稿者 : higeru     投稿日時 : 2023/09/07(Thu) 09:50:22
■[質問] VBA初心者さん(2023-09-07 00:09:43)の記事
> この度、リスト選択を設定した特定の範囲でセル入力(リストの中から選択)がされると、自動的にそのセルにロックがかかり、アクティブセルはそのまま動かない設定をしました。

 質問に対する回答ではなくてすみませんが、ロックはかかりますか?(変数 mStr はどこでどう宣言されているのでしょう?)

[返信 3] Re : 入力したVBAコードが上手く動かないです。
投稿者 : higeru     投稿日時 : 2023/09/07(Thu) 13:59:52
■[返信 2] higeruさん(2023-09-07 09:50:22)の記事
> ■[質問] VBA初心者さん(2023-09-07 00:09:43)の記事
> > この度、リスト選択を設定した特定の範囲でセル入力(リストの中から選択)がされると、自動的にそのセルにロックがかかり、アクティブセルはそのまま動かない設定をしました。

>  質問に対する回答ではなくてすみませんが、ロックはかかりますか?(変数 mStr はどこでどう宣言されているのでしょう?)

 失礼しました。ボケてました。モジュールレベル変数の宣言が(ここには)書かれてないだけなんですね(たぶん)。

[返信 4] Re : 入力したVBAコードが上手く動かないです。
投稿者 : 真田幸村     投稿日時 : 2023/09/07(Thu) 21:28:57
本当にありがとうございました!!

[返信 5] Re : 入力したVBAコードが上手く動かないです。
投稿者 : higeru     投稿日時 : 2023/09/08(Fri) 08:20:38
■[返信 4] 真田幸村さん(2023-09-07 21:28:57)の記事
> 本当にありがとうございました!!

 この掲示板は、質問投稿者自身でなくとも「解決済」にできてしまうということ??

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2023-10-02 00:44:34 )
タイトルとURLをコピーしました