プロが教えるわが家の防犯対策術!

どなたかお力をお貸しください。

A8からJ8で適当な長さの行の範囲にデータが入力されています。
F列ならば、確実にデータが入っているため、F列のデータが最後まで入力されている行を調べ、
A8からJのその列までの範囲のデータを消そうとし、下記VBAを記載したのですが、
「400」とだけ書かれたエラーメッセージが表示され、動きませんでした。。。

どのように記載すればいいのか教えて頂けないでしょうか?

Dim ClearRow
ClearRow = ActiveSheet.Range("F8").End(xlDown).Row
ActiveSheet.Range(Cells(1, 8), Cells(ClearRow, 10)).Clear

A 回答 (2件)

こんにちは。



再現性は取れなかったけれども、いくつかの点を示しておきます。
エラーは、たぶん、物理的(実際には存在しないのに、あたかもあるかのように扱った)エラーなのだと思います。
>A8からJのその列までの範囲のデータを消そうとし、下記VBAを記載したのですが、
まず、そういう内容ならコードは少し違います。

このようなスタイルのコードは、主に標準モジュールに置くことになります。
また、オブジェクト(Range, Cells)の前に「.」(ピリオド)があることに注意してください。

'//
Sub Test1Clear()
 Dim ClearRow As Long
 With ActiveSheet
  ClearRow = .Range("F8").End(xlDown).Row '*
  If ClearRow = Rows.Count Then Exit Sub 'F列に何もない時中止
  .Range("A8", .Cells(ClearRow, "J")).Clear 'A8~Jの末尾
 End With
End Sub

*場合によっては、以下が使えます。
ClearRow = .Cells(Rows.Count, "F").End(xlUp).Row
If ClearRow < 8 Then Exit Sub 'F列に何もない時
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

そして大変申し訳ございません。
>ActiveSheet.Range(Cells(1, 8), Cells(ClearRow, 10)).Clear
にて、最初のセルの指定が間違っておりました。
上記記載ですと”A8”ではなく”H1”になっていました。。。
”G1”~”O1”まで結合していたため、”H1”が指定できずにエラーになっていたようです。。。

ActiveSheet.Range(Cells(8, 1), Cells(ClearRow, 10)).Clear

と記載しなおしたところ無事実行できました。

お手数をおかけして申し訳ございません。
もっと基本的なところを確認するように致します。

ご回答頂いたお二方、本当にありがとうございました。

お礼日時:2015/02/23 13:52

>「400」とだけ書かれたエラーメッセージ


たとえば現在の環境ではできないことを命令したときに表示されますが、
シートの保護とかかけてませんか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>現在の環境ではできないことを命令したときに表示されます
なるほど。そういうエラーなのですね。

シートの保護はかけていません。念のため、対象のシート全てを選択した後に、「シートの保護」→「シートの保護解除」をやってから試したのですが、結果は変わりませんでした。
また、一応マクロのセキュリティも「全て有効にする」になっていることは確認しました。

もし他に思いつくようでしたら、教えて頂けると幸いです。

お礼日時:2015/02/23 13:11

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

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