重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

可視セルのコピーをするとエラーとなる。可視セルにしている理由は
オートフィルターのしぼりこみをした部分だけをコピーしたいからです

エラーにならない、コードもしくはアドバイスをお願いします

【条件】
・項目1から項目3にオートフィルターを設置
・項目1から項目3の列を非表示にしている。グループ化の上、AからC列を折りたたみ非表示
・項目1はA1セル

A  B   C
項目1 項目2 項目3
1行 1 1 1
2行 2 2 2
3行 3 3 3

【エラーとなるコード】
Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy



【コード】
Sub コピー()

Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy

Range("f1").PasteSpecial xlPasteValues

End Sub

  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (2件)

現在、折りたたんだ状態ということであれば、


マクロを以下のようにすれば良いかと思いますがいかがでしょうか。
①折りたたんだ列を展開する。
②提示されたマクロのコピー&ペーストを行う。
③列を折りたたむ(元の状態にする)


提示されたマクロに①と②を加える形になります。
    • good
    • 0

こんにちは



エラーの発生状況やエラー内容が不明ですが・・・

コピーする対象が存在しない場合(=全て非表示)にはエラーが発生します。
もしかするとそのような状態になっていませんか?

CurrentRegionの内容によっても、エラーの内容や発生位置が変わりますが、対処法としては「コピー対象が存在する」ことを確かめれば良さそうに思われます。


◇ 対処法1
CurrentRegionの中に、非表示ではない行が存在することを確認する。
Hiddenプロパティで表示の状態(表示/非表示)を確認することが可能ですので、事前に少なくとも一つ以上の表示行が存在するかを確かめれば良いでしょう。

◇ 対処法2
必ず非表示ではない行が含まれるようにする。
オートフィルターを想定しているのなら、項目行を設定しておけば、項目行は非表示にはなりませんので、コピー対象に項目行を含めておけば「全てが非表示」ということは起こらなくなります。

◇ 対処法3
エラー処理を追加する。
エラーが発生する原因が上記だけとは限定できませんけれど・・
エラー時にどうしたいのか不明ですが、エラー時の処理を追加することでも対処が可能でしょう。
https://learn.microsoft.com/ja-jp/office/vba/lan …
    • good
    • 0
この回答へのお礼

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

非表示、前提の話でした
非表示だとエラーとなり、表示しているとエラーになりません

回答としては、マクロでコピーする場所は
表示するしかないという事でございますね

実際は20行位の長い列なので、折りたたみ非表示にしています


>コピーする対象が存在しない場合(=全て非表示)にはエラーが発生します。

お礼日時:2025/04/27 22:17

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