top of page

【VBA】Excelの処理をマクロ化する

久しぶりの投稿。

しばらく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を押します。

実行できました。

今回はコピペして色を変えるという簡単な処理だったので、もっと複雑で

実用性のあるものが作れるよう頑張ります。

では。


bottom of page