• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:抽出してコピペ 検索すべき文字が存在しない場合は?)

エクセルのマクロを使って売上帳を作成する際の問題

このQ&Aのポイント
  • エクセルのマクロを使って売上帳を作成している際、売上帳シート内に存在しない顧客番号(取引がなかった顧客)を抽出しようとすると、全明細が抽出されてしまいます。
  • この場合、個別売上帳シートは空欄にしたいと考えていますが、どうすればよいでしょうか?

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

エクセル2003で試しましたが、検索値が見つからない場合、Autofilterには何も表示されず、結果として全明細がそっくりコピペされないのですが、yunako0517さんのではそうなるのですね? では、検索値が見つからない場合コピペせず、個別売上帳の"B5:H2005"もクリアするようにコードを直してみました。 これでどうでしょう? Sub 顧客抽出コピペ()   Dim Obj As Object   With Sheets("売上帳")     Set Obj = .Range("B5:B2005").Find(.Range("F2"), LookAt:=xlWhole)     If Obj Is Nothing Then       MsgBox "見つかりませんでした。"       Sheets("個別売上帳").Range("B5:H2005").ClearContents       Exit Sub     Else       .Range("B6").AutoFilter Field:=2, Criteria1:=.Range("F2").Value       .Range("B5:B2005").Copy     End If   End With   Sheets("個別売上帳").Range("B5").PasteSpecial Paste:=xlPasteValues   Sheets("売上帳").Range("E5:J2005").Copy   Sheets("個別売上帳").Range("C5").PasteSpecial Paste:=xlPasteValues   Application.CutCopyMode = False End Sub

yunako0517
質問者

補足

教えていただいたコードで参照セルを少し調整したら出来ました! ありがとうございます。 ただ、検索値が見つからない場合に、売上帳シート内にオートフィルタの表示が出たままになりますが、これを消すにはどうすればよいですか? 検索値がある場合には、売上帳シートに戻したらオートフィルタ表示は出ていません。

その他の回答 (1)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

yunako0517さんのエクセルのバージョンは何ですか? おっしゃることが再現できずに困惑しています。 お書きになったコードから推測するにオートフィルターはA5~J5に設置しているのでしょうか? これならどうでしょう? Sub 顧客抽出コピペ02()   Dim Obj As Object   With Sheets("売上帳")     If .AutoFilterMode = False Then       .Range("A5:J5").AutoFilter     End If     Set Obj = .Range("B5:B2005").Find(.Range("F2"), LookAt:=xlWhole)     If Obj Is Nothing Then       MsgBox "見つかりませんでした。"       Sheets("個別売上帳").Range("B5:H2005").ClearContents       .AutoFilterMode = False       Exit Sub     Else       .Range("B5").AutoFilter Field:=2, Criteria1:=.Range("F2").Value       .Range("B5:B2005").Copy     End If     .AutoFilterMode = False   End With   Sheets("個別売上帳").Range("B5").PasteSpecial Paste:=xlPasteValues   Sheets("売上帳").Range("E5:J2005").Copy   Sheets("個別売上帳").Range("C5").PasteSpecial Paste:=xlPasteValues   Application.CutCopyMode = False End Sub それから、「補足」に書かれてもわたしのところに通知はきませんので、このように古い質問に補足があったことを知ることはほとんどできません。(今夜はたまたま見つけましたが)

yunako0517
質問者

お礼

ありがとうございました。 merlionXXさんのおかげでできました。 また宜しくお願いします。

関連するQ&A