• ベストアンサー

IFの使い方

Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim ANS As Integer ANS = MsgBox("Aをクリアしてもいいですか?", _ vbYesNoCancel + vbInformation, "クリア実行") If Sheets("A").Range("6D").Value <> "" Then Select Case ANS Case vbYes Sheets("営業確認").Range("b6:e1000,g6:k1000").Select Selection.ClearContents Sheets("入力").Select MsgBox "クリアしました" Case vbNo MsgBox "キャンセル" Case Else MsgBox "中止します" End Select Else End If End Sub 説明 (1)『A』というシートのセル『D6』に値が残っていれば メッセージボックスを出す。 (2)メッセージボックスはyes,no,cancelボタンがある (3)YESなら指定したセルの値を消す (4)NOなら消さない (5)キャンセルなら(3)、(4)以外 (6)『A』の『D6』に値がなければメッセージは出ない 上記のようにマクロを組みましたが、IFの所がエラーになってしまいます。

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

  • ベストアンサー
  • yuro_xyz
  • ベストアンサー率100% (1/1)
回答No.2

【補足の回答】 >Sheets("営業確認").Range("b6:e1000,g6:k1000").Select >Selection.ClearContents 恐らく、Rangeの使い方が間違っているのではないでしょうか。 Sheets("営業確認").Range("b6","e1000").Select Selection.ClearContents Sheets("営業確認").Range("g6","k1000").Select Selection.ClearContents と分けて処理を実行しないとエラーになる気がします。 Rangeプロパティの説明が載っているサイトをリンクで貼っておきます。

参考URL:
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell.html
hrgc
質問者

お礼

ありがとうございます。 早速やってみたら出来ました!!

その他の回答 (1)

  • yuro_xyz
  • ベストアンサー率100% (1/1)
回答No.1

>If Sheets("A").Range("6D").Value <> "" Then .Range("6D")ではなくて.Range("D6")なのでは??

hrgc
質問者

補足

確認ミスでした。 ただ、 Case vbYes Sheets("営業確認").Range("b6:e1000,g6:k1000").Select Selection.ClearContents Sheets("入力").Select MsgBox "クリアしました" 上記もエラーしてしまいます。 アドバイスいただければ幸いです。