- ベストアンサー
エクセル記録マクロの作成方法
- エクセル記録マクロの作成方法を解説します。
- エクセルのマクロを利用してデータを抽出し、新しいシートに貼り付ける方法を紹介します。
- 自動記録操作でエクセルのマクロを作成する手順を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>(2) 確かにそうですね。 Excel2007で確認してみましたが、Paste:=xlValuesで問題なく動くようです。 イミディエイトウインドウで調べてみると、どちらも同じ値がかえされました。 ?xlValues -4163 ?xlPasteValues -4163 回答番号:No.3で、hige_082さんが提示されたコードでは Paste:=xlValues と、なっているようですね。 Web検索してみても Paste:=xlValues となっているところが結構あります。 下記ページで、【List20123】の絵にも載っています。 セルのコピーと貼り付け http://www6.plala.or.jp/MilkHouse/begin/contents201/contents20103.html サポート情報に、こんなのがありました。 [XL2000]マクロ記録でPasteSpecialの引数Pasteが正しく記録されない http://support.microsoft.com/kb/415379/ja
その他の回答 (4)
- keithin
- ベストアンサー率66% (5278/7941)
(1)についてはよろしいですね。 (2)について。 オブジェクトブラウザで見てみると判りますが,xlvaluesもxlpastevaluesもExcelVBAの内部的には -4163 という同じ値を持っているので,結果的には正しく作動します。 しかしExcelVBAでは,xlpastvaluesが「型式を選んで貼り付けの値を貼り付け」の命令で定義されている予約語ですが,一方xlvaluesは検索の命令の中で「値を検索」を指定する用に定義されています。リファレンスに従って誰が読んでも誤解しない言葉を選んだ方が,安全は安全ですよね。 #もしかすると。 その回答者さんが単純に「結果オーライ」な方で自分言葉で回答しただけのかも知れませんが,あるいはもしかするとその回答者さんは我々など及びも付かない昔からExcelマクロに慣れ親しんでいた方で,その当時はxlvaluesで良かった時代があったのかも?しれません。今回のこれがそうなのかは私も残念ながら存じ上げませんが,たまにそういう言葉(定数・予約語)があるのは事実です。
- hige_082
- ベストアンサー率50% (379/747)
マクロの記録開始 [Ctrl] + [*] [Ctrl] + [C] [Shift] + [F11] [Alt]押しながら[E][S][V]順でキーを押し[OK] マクロの記録終了 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2010/3/21 ユーザー名 : hige_082 ' Selection.CurrentRegion.Select Selection.Copy Sheets.Add Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 参考まで
- keithin
- ベストアンサー率66% (5278/7941)
操作の手順は (準備) オートフィルタは設定しておく 必要なら絞り込んでおく オートフィルタを設定した表範囲の中のセルをとりあえず1個選んでおく (記録開始) Ctrl + Shift + * を押すなどで「アクティブセル領域」を選択する Ctrl + C などでコピーする シート名タブを右クリックして挿入などでシートを挿入する 直ちに形式を選んで貼り付けの値にマークしてOKする 記録終了する 以上です。 >上記のようなコードで自動記録はおこなわれません。 どんな具合のマクロで記録できたのでしょうか? #自分がやったら「こうなってしまいました」というのを手抜きせずご相談に掲示してみると,どこか間違っていたかとか,いやそれで正解ですとか,はっきりしたアドバイスも寄せられますよ。 そもそもまるで違う命令になっていた場合は,記録した操作から違っています。実際に記録マクロを作動させてみたときに,やっぱり意図した結果が得られない場合もそうですね。 手順は合ってたしマクロを動かしたら正常に動くけど,他に色々ごちゃごちゃ記載されているので気になるというお話でしたら。 それはご覧になった掲示板の回答者が気を利かせて,マクロを編集して示しているだけです。例えばpatespecialなどで沢山余計なのが記録されているのを,止めさせる方法はありません。
お礼
連絡ありがとうございました。 値を別のシートに記入する場合は、わたくしの記録したプロシージャは Sub 別のシートに複写() ' ' 別のシートに複写 ' Sheets("Sheet1").Select Range("D4").Select Selection.CurrentRegion.Select Selection.Copy Sheets.Add Range("B1").Select ⇒ Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub ⇒のSelection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False と自動マクロが記録してしまうことを、疑問に思っていました。 私の「値の貼り付け」という操作は、間違っていないのですね。 Selection.PasteSpecial Paste:=xlPasteValues, 以下をマクロ作成者は抹消していたんですね。 それでも疑問に思っているのは Paste:=xlPasteValues を Paste:=xlValuesに直している点なのです。 何の違いがあり変更しているかを、ご存知でしたらご教示ください。
- xls88
- ベストアンサー率56% (669/1189)
オートフィルター抽出セル範囲内のセルを選択 Ctrl+Shift+: とキー操作して抽出セル範囲を選択 Ctrl+C でコピー シートを追加 Alt+E、S、V、Enter で「形式を選択して貼り付け」の「値」で貼り付け といったような操作になります。
お礼
連絡ありがとうございました。 私が記録マクロを作成すると下記の Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub となってしまうのですが、 (1)Operation:=xlNone, SkipBlanks:=False, Transpose:=Falseを表示しないで記録させる方法がないかということが知りたかった。(自動記録作成方法が違っているのか?と感じたこと。) (2)Selection.Paste:=xlPasteValues,となり Selection.Paste:=xlValues,とはならないことが疑問に思い質問いたしました。 ご存知でしたら、ご教示ください。
お礼
ありがとうございました。 私が記録マクロを作成すると下記の Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub となってしまうのですが、 (1)Operation:=xlNone, SkipBlanks:=False, Transpose:=Falseを表示しないで記録させる方法がないかということが知りたかった。(自動記録作成方法が違っているのか?と感じたこと。) (2)Selection.Paste:=xlPasteValues,となり Selection.Paste:=xlValues,とはならないことが疑問に思い質問いたしました。 ご存知でしたら、ご教示ください。