外出自粛中でも楽しく過ごす!QAまとめ>>

数式は残し値をクリアするマクロについてご教示お願いします。

Private Sub CommandButton3_Click

Dim msg As Integer
Dim i As Integer
Dim LastRow As Integer

msg = MsgBox(”初期化しますか?”,vbYesNo)
If msg = vbYes Then

Cells(8,8).Select
LastRow = Range(”H65536”).End(xlUp).Row

For i = 8 To LastRow

If Cells(i,8) = ”予算” Or _
Cells(i,8) = ”実績” Then

Range(Cells(i,9),Cells(i,15)).SpecialCells(xlConstants,23).ClearContents
EndIf
Next i

これで実行するもエラー1004となり、
9〜11列は値がクリアになりますが、
12〜15列目はクリアになりません。

★12〜15列のみ関数が入ってます。

なぜ数式が入ってない列のみクリアになり、エラーとなるのでしょうか?

質問者からの補足コメント

  • On Error Resume Next
    with Range〜

    Endwith
    で、初期化完了までいきましたが、
    やはり12列目の値はきえません。

      補足日時:2017/03/22 12:05

A 回答 (2件)

>VLOOKUPなどで他からひっぱっており、全部金額が入ってます。


>この金額だけ消したいんですm(_ _)m

関数式が入っているのですから、当然ながらセルには関数式の答えが表示されます。
それを消したいと言うことは、式を消すか、または引っ張ってきている元のデータを変更することになるのではないでしょうか??

あるいは、特定の条件下でのみ式の答えを表示させたくないということでしたら、セルの関数式でIFを使って条件設定する方法になるかと。
    • good
    • 0
この回答へのお礼

すみません、ありがとうございます!当然だということに気がつきました。すみません、ご迷惑かけました!m(_ _)m

お礼日時:2017/03/22 12:12

数式は残し、値をクリアしたいのですよね?


ならば SpecialCells(xlConstants,23) であってますし、関数式の入った12〜15列目がクリアされないのは思惑通りではないのでしょうか?

>これで実行するもエラー1004となり、
お書きになったコードからエラーになるような要因は見当たらないので、エラーの原因はこの続きのコードにあるのではないかと推測します。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
元々9〜11列目は0が入ってて、
実行したら0もなくなったのでこれは問題ないです。

12〜は
VLOOKUPなどで他からひっぱっており、全部金額が入ってます。
この金額だけ消したいんですm(_ _)m

エラーの原因調べてみます、ありがとうございます!

お礼日時:2017/03/22 11:47

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


人気Q&Aランキング