• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:セルの値を削除するVBA)

Excel VBAでセルの値を削除する方法

このQ&Aのポイント
  • Excel2003を使い、名簿リストのようなものを作成しました。ワンクリックで一部情報をすべて削除できるように、ボタンに対してマクロを組んだのです。しかし、実行時エラー'1004'が表示されます。
  • ボタン処理のソースコードを改変してエラーを解消する方法を教えてください。
  • ご存じの方、よろしくお願いします。

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

  • ベストアンサー
  • harapeco7
  • ベストアンサー率54% (33/61)
回答No.3

オートフィルターやセルの結合など、リストシートの状態に問題が有るのかと 考えていましたが・・・ >設定には、各種ボタン(マクロ実行用)は配置されています。 この情報でやっと再現する事が出来ました。 >Private Sub CommandButton1_Click() との事ですので、設定シートに設置しているコマンドボタンより マクロを実行していますよね? バグなのかは、私もよくわかりませんが、コマンドボタンが設置されている シートとは別のシートのセルをSelectしようとするとエラーが発生します。 >Sheets("リスト1年").Select >Range("C2:E101").Select この二行を Sheets("リスト1年").Activate ActiveSheet.Range("C2:E101").Select とすれば解決すると思います。

noname#176819
質問者

お礼

ありがとうございます。無事解決しました。最後までご丁寧にありがとうございました。

その他の回答 (2)

  • harapeco7
  • ベストアンサー率54% (33/61)
回答No.2

>なぜかデバッグボタンはあるのですが、クリックできず灰色です。 プロジェクトに保護かけていませんか? >Sheets("リスト").Select >Range("C2:E101").Select >Selection.ClearContents これから推測すると・・・ 削除しようとしてるセルは、リストシートのC2:E101のセル >削除しようとしているセルは、=(リスト!D2) この式から推測すると・・・ リストシート以外のシートのセルを削除しようとしている。 と、捉えてしまうのですが・・・? 削除したいセルは、どのシートなんでしょうか? >削除しようとしているセルに、フィルタ処理のような機能 オートフィルターかな? とりあえず色々試してみたのですが、エラー吐き出さないんですよね、、、 デバッグ結果お待ちしております;

noname#176819
質問者

お礼

ご回答ありがとうございます。 たしかにプロジェクトにロックがかけたままでした。解除したところ無事デバッグできました。 使ってる機能はオートフィルターで間違いないです。 作成したファイルは、全部で三つのシートにより構成されており、 設定、リスト、印刷でわかれています。 設定には、各種ボタン(マクロ実行用)は配置されています。 リストには実際に名前や電話番号、住所など、個人情報が記載されています。 このシートにはオートフィルター機能がかけられており、情報によって絞り込めるようになっています。 そして印刷は、印刷用に多少リスト(シート)に比べて印刷に向いたシートになっており、 =(リスト!D2)といった感じでリスト側から参照しています。 デバッグ結果です。⇒をかいたところでエラーがでてるみたいです。 Private Sub CommandButton1_Click() メッセージ = "本当に削除しますか" スタイル = vbYesNo タイトル = "一部削除(一学年)" YESNO = MsgBox(メッセージ, スタイル, タイトル) If YESNO = vbYes Then Sheets("リスト1年").Select ⇒Range("C2:E101").Select Selection.ClearContents Sheets("設定").Select ActiveWindow.SmallScroll Down:=39 Range("B57:H57").Select 完了 = "削除しました" スタイル = vbOKOnly dds = MsgBox(完了, スタイル, タイトル) Else End If End Sub 親切にご回答いただきありがとうございます。助かります。

  • harapeco7
  • ベストアンサー率54% (33/61)
回答No.1

んー テストしてみたのですが、スムーズに処理が終わってしまいました。 Private Sub CommandButton1_Click() メッセージ = "本当に削除しますか" スタイル = vbYesNo タイトル = "一部削除" YESNO = MsgBox(メッセージ, スタイル, タイトル) If YESNO = vbYes Then Sheets("リスト").Range("C2:E101").ClearContents 完了 = "削除しました" スタイル = vbOKOnly dds = MsgBox(完了, スタイル, タイトル) Else End If End Sub 上記のように記述するとエラーは発生しないと思いますが、 本当の意味での解決では無いですよね。 ということで、デバッグという機能の説明をさせていただきます。 >実行時エラー'1004' >RangeクラスのSelectメゾットが失敗しました。 とのメッセージ窓にデバッグというボタンがありますよね? それを押すとデバッグ画面に切り替わり、 問題が発生した行(処理が止まってしまった行)が黄色くなっていると思います。 これを辿っていけば問題解決が容易に行えます。 マクロの記述ではなく、シートの内容に問題点があるのかと思いますが・・・。 一度デバッグを行ってみてください。

noname#176819
質問者

お礼

ご回答ありがとうございます。 なぜかデバッグボタンはあるのですが、クリックできず灰色です。 どうしたらいいんですかね?それと補足として、たしかに新規にシートを作成して、マクロを張りつけましたができました。 それと削除しようとしているセルに、フィルタ処理のような機能(項目の横にあるボタンを押すと絞り込みができるやつです) を付加しています。それと削除しようとしているセルは、=(リスト!D2)という形で 他のセルから参照しています。この二つが原因ってことはあるのでしょうか? 自分でも試してみていますが、VBAに関してまったく素人なのでわからないことだらけです。 よろしくお願いします。

関連するQ&A