[[20160916205632]] 『結合したセルのオートフィルターで抽出する方法』(こた) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『結合したセルのオートフィルターで抽出する方法』(こた)

初めまして。VBA初心者です。

結合したセルをオートフィルターで抽出をマクロで出来たらと思っています。
下記のコードは、自分がやりたいことをマクロの記録で記録し
編集したものですが、ほぼそのままです(笑)

・結合セルC6〜C209
・抽出の項目A5〜G5
・抽出の表の範囲A5〜G209
・作業列 QK、QL

内容は、
1、作業列のセルQK6に=IF(C6="",QK5,C6)を挿入。
2、オートフィルでQK209までコピー。
3、QK6〜QK209まで選択してコピー。
4、隣の列QL6〜QL209を選択して「値」で貼り付け。
5、QL6〜QL209まで選択してコピー。
6、5を結合セルC6〜C209に「数式」で貼り付け。
7、D2から抽出したい文字列を読み取り、抽出。
8、作業列 QK、QLの数式及び値の削除

となっています。
このまま実行すると、「このブックでマクロが使用できないか、または全てのマクロが無効になっている可能性があります。」
とエラー表示が出てしまいました。
もちろん、マクロの設定等は何も変更していません。
コードが間違っているからだとは思うのですが、ご意見頂けたらと思います。
宜しくお願い致します。

    Range("QK6").FormulaR1C1 = "=IF(RC[-450]="""",R[-1]C,RC[-450])"
   Range("QK6").AutoFill Destination:=Range("QK6:QK209"), Type:=xlFillDefault
    Range("QK6:QK209").Select

    Selection.Copy
    Range("QL6:QL209").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Copy

    Range("C6:C209").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Range("A5:G5").Select
    Application.CutCopyMode = False
   ActiveCell.Range("A1:G1").Select
   Selection.AutoFilter
   ActiveSheet.Range("$A$5:$G$209").AutoFilter Field:=3, Criteria1:="*" & Range("D2").Value & "*"

    Range("QK6:QL211").Select
    Selection.ClearContents

< 使用 Excel:Excel2013、使用 OS:Windows8 >


そのエラーが出るBookの拡張子が .xlsx になっていませんか
マクロを使用するのであれば .xlsm である必要があります
(東北) 2016/09/16(金) 22:19

 (少なくともアップされた)コード自体は(記述等、改善できるところはありますが)、このままコピペして動かすと
 C列が D2にある値を含むものだけになります。(エラーは一切出ません)

 ・このコード、 Sub から End Sub まで フルセット、アップされてはいかがでしょう。
 ・このコードはどこに書かれているんでしょうか。
 ・このブックの標準モジュールに以下を貼り付けて動かすと、動きますか?

 Sub TestMsg()
    MsgBox "Hello"
 End Sub

(β) 2016/09/16(金) 22:31


 To 東北さん

 確かにマクロは xlsxブックには書けず、xlsmブックとしなければいけないのですが、この【書けず】というのは
 マクロを書いたあと、【保存できない】ということです。保存しようとすると、エクセルから、だめだよと叱られますね。

 ですから、呼び出した xlsxブックにマクロが存在していることはありません。

 ただし、xlsxブックを開いて、そこにモジュールを挿入してマクロを記述し、そのマクロを動かすことは可能ですよ。
 ただ、この状態で保存はできませんが。

(β) 2016/09/17(土) 00:03


 このブックでマクロが使用できないか、または全てのマクロが無効になっている可能性があります

 この文章を、そのまま検索語にして検索しますといろいろ出てきます。
 マクロ有効化に関するページもありますが、それ以外の、マクロ登録関係の操作間違いによるものもあります。

 ざっと閲覧して、こた さんの状況にあたるものがないか、確認してみるのもいいかもしれません。

(β) 2016/09/17(土) 04:22


たくさんのアドバイスありがとうございます。
アドバイスをもとに自分なりに調べてみました。

・このコードはどこに書かれているんでしょうか。
 →このブックの標準モジュールです。
・このブックの標準モジュールに以下を貼り付けて動かすと、動きますか?
 →動きました。

拡張子ですが.xlsm でした。
また、「このブックでマクロが使用できないか、または全てのマクロが無効になっている可能性があります」
の言葉でネットで検索してみましたが、拡張子のこと以外は理解できず「?」という感じです。

Sub から End Sub まで フルセット、アップさせて頂きます。
(模試の結果表を作成していますので、プロシージャ名は模試名です。)
ご指摘宜しくお願い致します。

Sub 進研、ベネッセ_名前抽出()

   Range("QK6").FormulaR1C1 = "=IF(RC[-450]="""",R[-1]C,RC[-450])"
   Range("QK6").AutoFill Destination:=Range("QK6:QK209"), Type:=xlFillDefault
    Range("QK6:QK209").Select

    Selection.Copy
    Range("QL6:QL209").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Copy

    Range("C6:C209").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Range("A5:G5").Select
    Application.CutCopyMode = False
   ActiveCell.Range("A1:G1").Select
   Selection.AutoFilter
   ActiveSheet.Range("$A$5:$G$209").AutoFilter Field:=3, Criteria1:="*" & Range("D2").Value & "*"

    Range("QK6:QL211").Select
    Selection.ClearContents

End Sub

(こた) 2016/09/17(土) 13:11


 犯人はマクロ名 進研、ベネッセ_名前抽出() でしょうね。
 マクロ名も大きく見れば変数名で、変数名として使っていい文字と使えない文字があります。

http://www.officetanaka.net/excel/vba/variable/06.htm

 今回の場合は 、 ですね。進研_ベネッセ_名前抽出() といったものに変えてお試しください。

(β) 2016/09/17(土) 13:46


ありがとうございます。
解決しました。
すごく初歩的なことで、勉強不足を痛感しました。
本当にありがとうございます。
(こた) 2016/09/17(土) 14:05

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.