Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12878 / 13646 ツリー ←次へ | 前へ→

【8130】セルのフォーカスをロックしたいんですが あきら 03/10/1(水) 18:25 質問
【8132】Re:セルのフォーカスをロックしたいんです... INA 03/10/1(水) 18:56 回答
【8147】Re:セルのフォーカスをロックしたいんです... あきら 03/10/2(木) 8:39 お礼
【8149】Re:セルのフォーカスをロックしたいんです... INA 03/10/2(木) 8:46 回答
【8190】Re:セルのフォーカスをロックしたいんです... あきら 03/10/3(金) 8:41 お礼
【8191】Re:セルのフォーカスをロックしたいんです... INA 03/10/3(金) 8:47 回答

【8130】セルのフォーカスをロックしたいんですが
質問  あきら  - 03/10/1(水) 18:25 -

引用なし
パスワード
   2000を使っています。
[例]
日付 種別 お金
4/3 3  300
4/6 1  200
4/7
4/8 2  800

お金の列に金額を入力して、種別の列が選択されていない場合は
種別を選ぶまで動かない用にしたいのですが・・・
何か良い知恵はありませんか?
Worksheet_Changeでいろいろ試してみたんですが、どうもうまくいきません
助けてください。

【8132】Re:セルのフォーカスをロックしたいんです...
回答  INA  - 03/10/1(水) 18:56 -

引用なし
パスワード
   [種別]と[お金]をVBAの処理で使用しているのであれば、
そちらで対応しても良いかと思います。

単に[種別]に入力されていない状況で、[お金]を入力されると
困るというのであれば、
Worksheet_Change で、

if Target.column = 3 then
 if cells(Target.row,2).Value = "" then
   msgbox "種別が入力されていません"
   target.value = ""
   cells(Target.row,2).select
 end if
end fi

のようにしてはいかがでしょうか?
直書きなので、間違えていたら済みません。

【8147】Re:セルのフォーカスをロックしたいんです...
お礼  あきら  - 03/10/2(木) 8:39 -

引用なし
パスワード
   ありがとうございます。
試してみたんですが・・・
Msgboxがずっと表示されてしまいます。

【8149】Re:セルのフォーカスをロックしたいんです...
回答  INA  - 03/10/2(木) 8:46 -

引用なし
パスワード
   マクロ内でC列に入力した値を、削除しているため、
再度Changeイベントが動いてました。
以下のように、最初と最後にEnableEventsのイベント制御を追加して下さい。

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False

If Target.Column = 3 Then
 If Cells(Target.Row, 2).Value = "" Then
   MsgBox "種別が入力されていません"
   Target.Value = ""
   Cells(Target.Row, 2).Select
 End If
End If

Application.EnableEvents = True
End Sub

【8190】Re:セルのフォーカスをロックしたいんです...
お礼  あきら  - 03/10/3(金) 8:41 -

引用なし
パスワード
   ありがとうございます。
何度もすいません
後、2列目に移動後何も入れずに[Enter]を押すと次に進めてしまいます。
出来れば入力をしないと2列目はフォーカスをはずさない様にしたいんですが
協力お願いします。

【8191】Re:セルのフォーカスをロックしたいんです...
回答  INA  - 03/10/3(金) 8:47 -

引用なし
パスワード
   では、これでいかがでしょうか?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Column <> 3 Then Exit Sub

If Cells(Target.Row, 2).Value = "" Then
  MsgBox "種別が未入力です。"
  Cells(Target.Row, 2).Select
End If

End Sub

12878 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free