dポイントプレゼントキャンペーン実施中!

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

A 回答 (1件)

こんにちわ



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)
    • good
    • 1
この回答へのお礼

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

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

お礼日時:2012/07/20 11:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A