こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルVBAのDeleteキーによるエラー

VBA初心者です。エクセル(2003)のVBAについて質問です。

セルに何か値が入力されたら、隣のセルに「TRUE」と入力し、
入力が消去されたら、隣のセルに「FALSE]と入力されるマクロを作成しています。

下記のコードをシートモジュールに入力し、
標準モジュールにはそれぞれ呼び出し用のマクロを入力しています。
A列とB列は結合されていて、その結合されたA・B列のセルに値が入力されたり消去されたりすると
隣のC列に結果が入力されるようにしたいのですが、
A・B列の値をDeleteキーで消去するとエラーになってしまいます。
BSキーで値を消去するとエラーは出ません。
Deleteキーでもエラーが出ない様にする方法はありますでしょうか。
どなたかご教授お願いします。

-----------------------------------------------------

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:B1,A3:B3,A5:B5")) Is Nothing Then
If Target.Value <> "" Then
Select Case Target.Address(0, 0)
Case "A1"
Call マクロ1_TRUE
Case "A3"
Call マクロ3_TRUE
Case "A5"
Call マクロ5_TRUE
End Select
ElseIf Target.Value = "" Then
Select Case Target.Address(0, 0)
Case "A1"
Call マクロ1_FALSE
Case "A3"
Call マクロ3_FALSE
Case "A5"
Call マクロ5_FALSE
End Select
End If
End If
End Sub

投稿日時 - 2012-07-20 09:41:07

QNo.7600433

困ってます

質問者が選んだベストアンサー

こんにちわ

Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox Target.Address(0, 0)
If Intersect(Target.Cells(1), Range("A1:B1,A3:B3,A5:B5")) Is Nothing Then Exit Sub
If Target.Cells(1).Value <> "" Then
・・・
・・・

上の例のように、MsgBox Target.Address(0, 0)を加えて、
DeleteキーとBSキーでの動作の違いを見てください。

そして、次のようにすべて書き換えてください。
Target → Target.Cells(1)

投稿日時 - 2012-07-20 11:16:46

お礼

素早い回答ありがとうございます!
エラーが出ない様に出来ました。
メッセージボックスには、Deleteキーを押した時には
結合した2つのセルが表示されました。
Target.Cells(1)とは結合したセルのうちの
1番目を指定しているという事でしょうか。

本当に助かりました!これからもっとVBAを勉強します。
ありがとうございました。

投稿日時 - 2012-07-20 11:56:49

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-