戻る



7.1行マクロを作ろう

はじめに
マクロ(Macro)というと難しいプログラミングを想像しがちですが、決してコンピュータの専門家しか作れないわけでは有りません。Excelマクロ(以下 VBA=Visual Basic Programming System Applications Edition)には、便利な機能があります。それは、自分(ユーザー)のやりたい操作をVBAに記録してくれるんです。これを利用して「1行マクロ」を作って見ましょう。
それでは、「1行マクロ」について、ちょっと説明しておきましょう。
例えば、数式の入ったセルの値のみを貼付ける場合、コピー選択して、「編集」「形式を選択して貼り付け」「値」といった操作が必要になります。しかし、その操作をVBAに登録してショートカットキーに割り当てておくとコピー選択後、ショートカットキーを押すだけで一連の操作が終ります。
このように「1行マクロ」というのは、階層の深いコマンド(何回もコマンドメニューを追いかけないと選択できないコマンド)や日常、ショートカットキー(例えば、コピーを「Ctrl」+「C」キーで行う等)をよく使う人には非常に便利なものだと思います。

手順1.
まず、手始めに「値のみを貼り付け」のVBAを作成しましょう。

Excelの初期画面(Excelを起動した状態)でツールバーから「ツール」「マクロ」「新しいマクロの登録」と選択していくと下記のダイアログが表示されます。



〔マクロ名〕に"値貼付け"(後から自分が見て判る名前)、〔ショートカットキー〕に"P"(※1)、〔マクロの保存先〕は"個人用マクロブック"にして〔OK〕をクリック。

※1.ここで、小文字の"p"を入れると〔Ctrl〕+"p"がショートカットキーとして割り当てられます。大文字の"P"を入れると〔Ctrl〕+〔Shft〕+"P"がショートカットキーとして割り当てられます。(大文字と小文字によって割り当てられるキーが違うので注意が必要です)私の場合は、Office(WordやExcel等)に割り当てられているショートカットキーが〔Ctrl〕+○キーになっているので、それと混同しないように自分の決めたショートカットキーとして覚えやすいので〔Ctrl〕+〔Shft〕+○キーで設定しています。

手順2.
セルA1に"gomame"(何でもよいのですが)と入力します。そして、それをコピー(マウス右クリックからコピーを選択)して、セルC1をクリックしてマウス右クリックから〔形式を選択して貼付け〕、〔値〕のラジオボタンに印を付けて〔OK〕。これでセルC1にも"gomame"が入力されました。
ここで、ツールバーから「ツール」「マクロ」「記録終了」を選択してマクロ記録を終了します。

もし、記録途中に失敗したら・・・(記録されていると思うと緊張して失敗することが多々あるんですよ(^^ゞ)
大丈夫ですよ、失敗したツールバーから「ツール」「マクロ」「記録終了」を選択してマクロ記録を終了します。そして次項3.に進んで下さい。

手順3.
それでは、記録したマクロを見てみましょう。「ツール」、「マクロ」、「Visual Basic Editor」で下記のウインドウが開きます。



プロジェクトウインドウ内にある「VBAProject(PERSONAL.XLS)」から「Module1」をWクリックする。

(前項2.で失敗した時)
プロジェクトウインドウ内にある「VBAProject(PERSONAL.XLS)」から「Module1」を右クリックする。(「Module1」の"1"は失敗の度にカウントアップされます)「Module1の削除」をクリックすると"削除する前にModule1をエクスポートしますか?"と聞いてくるので「いいえ」をクリック、これで失敗したマクロは削除されました。再度、最初からやり直して下さい。



コードウインドウが表示されたら、「Declaration」の▼をクリックして「値の貼付け」を選択すると先ほど記録したマクロのコードが表示される。

記録マクロのコード


手順4.マクロの編集
上記マクロは、A1セルに"gomame"を入力して、そのデータをC1セルにコピーする。というコードです。しかし、実操作では不特定のセルのデータを不特定のセルに貼付けるマクロコードをあらかじめ記すことはできません(当たり前ですよね)
そこで、不特定な部分は手操作で行い、貼付け操作だけをマクロコードにしておきます。
消去範囲を選択して[Delete]キーを押しましょう。



これで以下のコードのみ残りました。(注釈記号 "'" の付いた部分は残しておきましょう)

Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False


このままでもいいのですが、もっとスマートなコードにしましょう。

マクロコードの解説

Selection.PasteSpecial 指定した位置で貼付け
Paste:=xlValues 何を貼付けるのか
xlAll すべて(既定値)
xlValues
xlFormats 書式
Operation:=xlNone 貼付けの方法
xlNone 設定しない(既定値)
xlAdd 加算
xlSubtract 引算
SkipBlanks:=False クリップボードに含まれる空白セルの処理
False 空白セルとして処理する(既定値)
True 空白セルを無視する
Transpose:=False 行列を入替える
False 入替えない(既定値)
True 入替える


各項目の「既定値」は省略してもよいことになっているので、要らないコードを消去しましょう。

Selection.PasteSpecial Paste:=xlValues

上記のようになりました。(どうです、スッキリしたでしょう)




手順5.マクロ名の変更
後で見て何のマクロかわかるように、マクロ名を変更しておきましょう。プロパティウインドウの「(オブジェクト名)「Module1」を選択(クリック)して"Module1"を消して「(オブジェクト名)値の貼付」に変更しましょう。変更して〔Enter〕キー
を押すとプロジェクトウインドウに変更後の名前が反映されます。




手順6.マクロの保存
作成したマクロを保存しましょう。プロジェクトウインドウ内にある「VBAProject(PERSONAL.XLS)」をWクリックしてツールバーから「ファイル」「PERSONAL.XLSの保存」をクリック。これで保存完了です。(PERSONAL.XLSのファイルはEXCELアプリケーションのあるフォルダ内に保存されています)






手順7.作成したマクロの実行
それでは、早速作成したマクロを使ってみましょう。
新しいBookを開いて下さい。そして、A1〜A3セルに"A","B","C"(何でもいいんですよ)と入力して、A1〜A3セルをコピー選択(A1〜A3を範囲指定して〔Ctrl〕+Cキー)カーソルをC1セルに移動させて〔Shift〕+〔Ctrl〕+Pキーを押すと・・・



どうですか、C1〜C3にコピーできましたか?出来なかった方はもう一度マクロコードを確認して下さい。「切り取り」でこの操作をするとエラーになりますよ、念のために。


その他の1行マクロ
その他の自分が使用してるマクロのコードを列記しておきます。登録方法は上記と同じやり方でできると思います。
あまりたくさんのマクロを登録すると、ショートカットキーを思い出す(探す)だけで時間を費やすことのなるのでほどほどに(;_;)
もっと便利な1行マクロがあれば、是非教えていただけたら幸いです。

(1)数式のコピー
Sub Susiki_Past()
 ' Keyboard Shortcut: Ctrl+Shift+O
 '数式の貼付け
 Selection.PasteSpecial Paste:=xlFormulas
End Sub

(2)書式のコピー
Sub Syosiki_Past()
 ' Keyboard Shortcut: Ctrl+Shift+O
 '書式の貼付け
Selection.PasteSpecial Paste:=xlFormats
End Sub


(3)選択範囲中央揃え
Sub Hani_Center()
 'Keyboard Shortcut: Ctrl+Shift+L
 '選択範囲中央揃え
 Selection.HorizontalAlignment = xlCenterAcrossSelection
End Sub



おわりに
文章、解説の仕方がヘタなもので、申し訳ありません。「もっとわかり易く教えろ!!」といわれる方は、私までMail下さい。できるだけ対応したいと思っております。
この章、最後までお付き合いいただきましてありがとうございました(__)


戻る