[VBA]特定の範囲のセルの値を変更または新規入力した際に、先頭にシングルクォーテーションを追加するという記述方法を教えてください。 実行したい内容は
[VBA]特定の範囲のセルの値を変更または新規入力した際に、先頭にシングルクォーテーションを追加するという記述方法を教えてください。 実行したい内容は ①実行範囲:B9より下のセル全て(B列のみ、B1~8は外す) ②実行のタイミング:セルの値変更をした時、または新規入力をしたとき ③入力された値の先頭にシングルクォーテーションを付ける ④セルの値が変更、新規入力された時以外は実行しない。(セルを選択しただけ、変更していない場合は実行しない) 一応、ネットで調べて自分で作ったものを載せておきます。 B列に入力すると、エラーが出ます。 Selectionから始まる行が黄色くなります。。。 Private Sub Worksheet_Change(ByVal target As Range) '範囲指定(B9以下全て) If Not (target.Row >= 9 And target.Row <= 100000 And target.Column = 2) Then End 'エスケープを入れるレンジの指定 Selection.Value = Evaluate("""'""&" & Selection.Address) End Sub よろしくお願いいたします。
Visual Basic | Excel・98閲覧・100
ベストアンサー
Private Sub Worksheet_Change(ByVal Target As Range) If Target.CountLarge <> 1 Then Exit Sub ''範囲指定(B9以下全て) If Not Intersect(Target, Range("B9", Cells(Rows.CountLarge, "B"))) Is Nothing Then ''エスケープを入れるレンジの指定 If Target.Value <> "" Then Application.EnableEvents = False Target.Value = "'" & Target.Value Application.EnableEvents = True End If End If End Sub で、いいのでは?
1人がナイス!しています
ご回答ありがとうございます!! おかげ様でできました。 色々調べましたが不明点がまだたくさんあります。 もしよろしければご教授ください。 ① If Target.CountLarge <> 1 Then Exit Sub この行の意味合いが理解できません ② If Target.Value <> "" Then Application.EnableEvents = False Target.Value = "'" & Target.Value ←この行は「Target.Value <> "" でない場合」という条件になっているのでしょうか? Application.EnableEvents = True ←上の行で実行しているわけではなく、ここで実行を指示しているのでしょうか。 初心者な質問で申し訳ありません。 よろしくお願いいたします。
質問者からのお礼コメント
何度もご回答ありがとうございました! 無事に問題解決できました! 頂いたご回答を無駄にしないよう頑張ります!!
お礼日時:5/25 12:02