• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル:マクロでこんなことはできますか?)

Excelマクロで山田太郎さんに関するシートを自動的に削除する方法

このQ&Aのポイント
  • エクセルのマクロを使って【シート1】の山田太郎を削除すると、【シート2】の2~4行に入っている山田太郎さんに関するシートも自動的に削除する方法について教えてください。
  • 【シート1】には山田太郎や山田花子などの名簿がありますが、【シート2】では特定の名前のデータを参照しています。そこで、【シート1】から山田太郎を削除した場合、それに関連する【シート2】のデータも削除したいです。
  • 具体的には、【シート1】の山田太郎(1行すべて)を削除したときに、【シート2】の2~4行に入っている山田太郎さんに関するシートを自動的に削除する方法を教えてください。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。Wendy02です。 今、もう一度読み直して、ちょっと試してみましたが、ワークシートイベントではうまくいきません。既存のコマンドボタンに、全てイベント付けをつけるのは、かなり手間なのです。今は、時間が取れませんので、もし、我こそはと思う方にお任せしたいと思います。 これをボタンに取り付けてください。 Sub TestSample() Dim SearchWord As String Dim myFirstAddress As String Dim myUnionRange As Range Dim c As Range  SearchWord = ActiveSheet.Name & "!" & ActiveCell.Address(0, 0)  Set c = Worksheets("Sheet2").Cells.Find _  (What:=SearchWord, _  LookIn:=xlFormulas, _  LookAt:=xlPart, _  SearchOrder:=xlByColumns, _  SearchDirection:=xlNext)     If Not c Is Nothing Then     Do     If myUnionRange Is Nothing Then      Set myUnionRange = c     Else      Set myUnionRange = Union(myUnionRange, c)     End If      Set c = Worksheets("Sheet2").Cells.FindNext(c)     Loop Until c Is Nothing    End If     If Not myUnionRange Is Nothing Then       myUnionRange.MergeCells = False       myUnionRange.EntireRow.Delete     End If     ActiveCell.EntireRow.Delete End Sub

yastaro
質問者

お礼

Wendy02さん、ありがとうございます。私のわかりにくい質問に真摯に取り組んでいただいたことに感激しています。過去の私の投稿まで見ていただいて、なんとかご回答くださろうとしていただいたことに心から感謝申し上げます。実は、初心者の私に上記マクロの利用にまで能力が達しませんでした。ただ感謝の気持ちだけでもお伝えしたく存じます。ありがとうございました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >【シート2】の2~4行に入っている山田太郎さんに関するシートを自動的に削除したい。 確かに、おっしゃることは出来ます。しかし、No.1763213で、「エクセルのマクロで、シートを削除するとき・・・」となっていますから、その延長上にあるとはしても、データを1つ削除して、それに連動して、シート削除というのは、かなり無茶な気がします。せいぜい、行の削除程度なら分りますが。 INDIRECT関数を使用と書いているなら、そのデータは、同時に参照場所のデータを失っているから、データが消えているはずですね。おっしゃっている「シート2」側の部分が明確にはありませんね。 それに、なぜ、INDIRECT関数を使っているか、というようなところまで発展してしまいます。被参照セルを失ったときに、エラーにならないようにしているのではないかと思いますが、式の入っている側を消したら、無意味のような気がします。 どうも、見えない部分が多すぎて、次のステップのイメージがわきません。

yastaro
質問者

補足

ありがとうございます。実は、「行の削除」と書きたいところを「シートの削除」と書き間違えました。申し訳ありません。要は、シート2の2~4行を自動削除できるかということです。

  • banker_U
  • ベストアンサー率21% (17/78)
回答No.1

あなたのマクロスキルはどれぐらいですか? 求める回答のレベルはどの程度のものですか? イベントプロシージャでできないことはないとは思いますが、ボタンでも作っておいて、マクロを割り当てといた方が、簡単だと思います。

yastaro
質問者

補足

ありがとうございます。マクロ初心者です。それと実は、「シートの削除をしたい」ではなくて「2~4行の行の自動削除をしたい」です。あせっていて書き間違えました。申し訳ありません。

関連するQ&A