【VBA】Excelの処理をマクロ化する
- uniteen
- 2015年7月18日
- 読了時間: 2分
久しぶりの投稿。
しばらくunityはいじれなそうです。
先にVBAを覚えて、会社での仕事を効率化することにしました。
【Excelの処理のマクロ化】
ある指令
→【ある動作】
→ある指令
→【ある動作】
・・・・
このようにしてExcelでの操作を自動化したい場合、指令に関しては
自分でコードを書かないといけないですが、動作に関しては、自分が
Excelでした動作をExcel側が、勝手にマクロにしてくれます。
①新しいマクロの記録を選択

②適当に名前をつけて保存

③自分で動作をExcelに実行する。
例えば、あるセルに、何かを書き込んで、それを隣のセルに書き込んだあと、青くしたい場合
なら、その一連の流れを実行する。
下の画像では、C31に「東方不敗」と打ち込み、それをコピー、D31に貼り付け、
文字を青くしました。マクロを記録しています。

④記録を終了

⑤Visual Basic Editorを起動、先ほどの動作を確認

Range("C31").Select ・・・C31を選択
ActiveCell.FormulaR1C1 = "東方不敗" ・・・「東方不敗」と記述
ActiveCell.Characters(1, 2).PhoneticCharacters = "トウホウフアイ" ・・・ふりがな情報
ActiveCell.Characters(3, 2).PhoneticCharacters = "フハイ" ・・・ふりがな情報
Range("C31").Select ・・・C31を選択
Selection.Copy ・・・コピー
Range("D31").Select ・・・D31を選択
ActiveSheet.Paste ・・・貼り付け
Selection.Font.ColorIndex = 0 ・・・青色に変更
というふうに動作を分解してくれます。
ただ、私がMacで操作したからなのか、最後のFont.ColorIndex、つまり色の変更が0で
エラーになってしまいました。
青にしたければ、Selection.Font.ColorIndex = 5 にすればいいです。
※色の早見表

⑥必要な部分を抜き出し、指令と組み合わせ
今回の指令は
【H1~H10に「東方不敗」と打ち込み、それをコピー、それをI1~I10まで貼り付け、
その後I列の「東方不敗」を青文字にする】
とします。別にコピペしなくても、最初からH列とI列に打ち込めばいいんですが、
複雑な処理もできるという解説になります。
>Sub 貼り付けコピぺ()
Dim i
For i = 1 To 10
Range("H" & i) = "東方不敗"
Range("H" & i).Select
Selection.Copy
Range("I" & i).Select
ActiveSheet.Paste
Selection.Font.ColorIndex = 5
Next i
End Sub
EndFragment
組み合わせると上記になります。
関数の組み合わせについては、iの数値に1~10まで順々に代入することで、
行の移動をしています。
実際に稼働するには、F5を押します。

実行できました。
今回はコピペして色を変えるという簡単な処理だったので、もっと複雑で
実用性のあるものが作れるよう頑張ります。
では。
Comments