Excel VBA質問箱 IV

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

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


219 / 13645 ツリー ←次へ | 前へ→

【81470】エクセルVBAのWorkSheet_Change実施後の入力不可について たか 20/9/9(水) 14:25 質問[未読]
【81471】Re:エクセルVBAのWorkSheet_Change実施後の... γ 20/9/9(水) 16:12 発言[未読]
【81472】Re:エクセルVBAのWorkSheet_Change実施後の... γ 20/9/11(金) 7:43 発言[未読]

【81470】エクセルVBAのWorkSheet_Change実施後の...
質問  たか E-MAIL  - 20/9/9(水) 14:25 -

引用なし
パスワード
   エクセルで、各項目への入力漏れを減らすために、最初のセルに入力があれば、他の入力必須項目に薄灰色文字で「入力」と表示させ、そこに入力があるとその文字が消え、通常通りに黒文字で入力ができるようにしたいです。
VBAをどうにか調べて書き、
1. 最初のセルに入力があれば、他の必須項目に薄灰色文字で「入力」と表示させる
2. 最初のセルが空白になれば、他の必須項目の「入力」が消える
ようには出来たのですが、実際に必須項目に「入力」と表示されたセルに文字入力をしようとすると、
1. 上書きが全くできず灰色文字の「入力」に戻ってしまう
2. 最初のセルが空白であれば、入力必須項目に入力しても空白になる
という状況です。
下記の通りのVBAを作ってみたのですが、どこが間違っているのでしょうか?
どのように記載すればよいでしょうか?
どなたかご教示をお願いします。

Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False
  Application.ScreenUpdating = False
    If Range("D8") <> "" Then
      Call 入力推奨文字表示
    Else
      Range("R5,Y6,Y9,AB6,AB9,AG5,AM5,AS6,AS9,AX9,AY6,BF7,BF9,BG5,BL5") = ""
    End If
  Application.EnableEvents = True
  Application.ScreenUpdating = True
End Sub

Sub 入力推奨文字表示()
  Application.EnableEvents = False
  Application.ScreenUpdating = False
    With Range("R5,AB6,AB9,AG5,AM5,AS6,AS9,AX9,AY6,BF7,BF9,BG5")
      .Value = "入力"
      .Font.ColorIndex = 15
      .Font.Bold = True
    End With
  選択
  Application.EnableEvents = True
  Application.ScreenUpdating = True
End Sub
      
Sub 選択()
  Application.EnableEvents = False
  Application.ScreenUpdating = False
     Range("Y6,Y9") = "未"
     Range("BL5") = "選択"
  Application.EnableEvents = True
  Application.ScreenUpdating = True
    
End Sub

【81471】Re:エクセルVBAのWorkSheet_Change実施後...
発言  γ  - 20/9/9(水) 16:12 -

引用なし
パスワード
   セットができてからも、相変わらずそのイベントプロシージャは
動作しますよ。
なにか入力しても、指定したセルには予め決めたものが
書き込まれると、あなたが指示された訳ですが、
そにあたりはどのように整理されていますか?

【81472】Re:エクセルVBAのWorkSheet_Change実施後...
発言  γ  - 20/9/11(金) 7:43 -

引用なし
パスワード
   あなたが言うところの"最初のセル"は、"D8"セルに固定なんですかね。
コードの意図がわからないので、なんともコメントのしようがないので、
あなたの意図をもう少し説明されるとよいと思います。

参考までにコメントしておくと、
Target引数には、変更になったセルが渡されますから、
そのアドレスで判断して、
・特定のセルが変更になった場合だけ処理をする(それ以外は直ぐにプロシージャを抜ける)ことや、
・逆に、特定のセル以外が変更になった場合だけ処理をする、
といったことができます。

あなたの意図に沿ってそれらを使えることができると思います。

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