質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

5406閲覧

VBA Worksheet_change で ドラッグやコピーをした時にも動くようにしたい

miyabin09

総合スコア9

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/06/07 07:58

前提・実現したいこと

Excel vba のworksheet changeを利用して、通常は白くぬりつぶされている、特定範囲のセルに対して0以上の数値が入力された場合に赤く塗りつぶしたい。
また、一度赤くなった複数セルをdeleteで消去したら、白く通常になり
コピー&ペーストした場合でも動くようにしたい

発生している問題・エラーメッセージ

セルに単発入力した場合は、赤くなり問題無し 複数セルをdeleteしても白くなり問題はないのだが、 コピーペーストされた場合には反応せず、そしてドラッグした場合には一瞬赤くなるがすぐに白くなる

該当のソースコード

vba

1 2Private Sub Worksheet_Change(ByVal Target As Range) 3 4'ターゲットセルを白に初期化 5Target.Interior.Color = vbWhite 6 7'ターゲットと指定エリアがかぶっていない場合は終了 8If Intersect(Target, Range("A1:B10")) Is Nothing Then 9 Exit Sub 10Else 11 12'複数セルを消去した場合 処理無し 13 If IsArray(Target.Cells.Value) Then 14 Exit Sub 15 End If 16 17'セル1つを削除した時 処理無し 18 If IsEmpty(Target.Cells.Value) Then 19 Exit Sub 20 End If 21 22'入力が0以上であれば、赤く塗りつぶす 23 If Target.Value > 0 Then 24 Target.Interior.Color = vbRed 25 End If 26 27End If 28End Sub 29 30

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

こんな感じですか?

VBA

1Private Sub Worksheet_Change(ByVal Target As Range) 2 Dim rng As Range, c As Range 3 Set rng = Intersect(Target, Range("A1:B10")) 4 If rng Is Nothing Then Exit Sub 5 For Each c In rng 6 c.Interior.Color = vbWhite 7 If IsEmpty(c) Then 8 ElseIf Not IsNumeric(c) Then 9 ElseIf c.Value >= 0 Then 10 c.Interior.Color = vbRed 11 End If 12 Next 13End Sub

投稿2021/06/07 16:18

jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabin09

2021/06/08 08:29

ありがとうございます。 target.valueだけでは、ドラックやコピペには対応しないので for eachでの対応が必要なのですね。 さらに数値までの判断はifとelseifを使用して、条件を絞っていくやり方もあるんですね。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問