前回作成した2進数と16進数のテンプレートファイルで・・2進数を変更すると・・セルの数式が変更されて・・連続で作業が出来ない・・このことに対する対策を・・。
回避策はマクロで対応というもの・・もうこれしかないかな・・。
Excelのマクロと聞けば難しく思う人が多いかも・・けど記録マクロを使うことで結構気軽に使うことが出来ます・・。
目次
Excelのマクロ
Excelのマクロと聞けば・・なんか難しそう・・そう思う人は多いでしょう・・。
マクロといえば・・プログラミングの知識が必要と思われがちなので・・。
確かの複雑なマクロを作ろうと思えば・・プログラムの高いスキルが必要ですが・・。
Excelのマクロの作成方法は2つあります
- 直接コードを書き込む
- 記録マクロ
直接コードを書き込む
Excelのマクロを作るのは・・通常はこの方法で作成します・・。
この方法はとても難しく高度なVBAプログラミングのスキルが必要・・。
記録マクロ
記録マクロとは・・Excelの操作を記録して VBAのコードを作成してくれる機能・・。
Excelの操作を録画してくれるといった感じ・・これを使うとVBAのコードを書かなくてもマクロを作れることに・・ただし・・記録マクロでは・・常に同じセルに対する操作しかできないのが難点・・なのであまり複雑なマクロを作ることは難しいかも・・。
記録マクロの作り方
記録マクロの作り方はすごく簡単・・その前にExcelのオプションで【開発】タブを有効にしておく必要があります・・詳しいこと以前の記事で書いてあるのでここでは割愛。
Excelの【開発】タブを有効にしたら・・【開発】タブの【マクロの記録】をクリック・・すると・・マクロの名前を聞いてくるので・・分かりやすい名前を付けましょう・・。
取りあえず・・という場合は・・初期値の【Macro N】(Nは数字)でもOK・・。
そして記録したいExcelの操作を行います・・記録したい操作が終了したら・・【開発】タブの【記録終了】をクリックすればOK・・。
イベントマクロ
Excelでマクロを起動鶴方法は2つあります・・。
1【マクロの実行】コマンドで実行
2 Excelのイベントで実行
Excelのイベントとは・・Excelに何らかの操作がされたこと・・例えば・・特定のセルの値が変更されたら・・このマクロを実行するようにすることが可能
これをイベントマクロといいます・・今回はイベントマクロで16進数を書き込んだら・・2進数を表示するセルに数式を書き込むようにしてみようおと思う。
実際のマクロを作成する
実際のマクロを作成してみることに・・・ 。
どのようなマクロを作るかというと・・記録マクロでセルC5からR5にセルC4からR4の値をリンクさせるマクロを作成し・・。
連結セルC2:J2もしくはK2:R2が変更されたら・・先ほど作成した記録マクロを実行させるようにいたします。
記録マクロの作成
リンクマクロを作成することに・・まずは【開発】タブの【マクロの記録】をクリックすると・・マクロ名を聞いてくるので 今回は、マクロ名を【やりなおし】としておくことに・・。
セルC5からR5にC4からR4のリンクをさせるために・・セルC5に【=C4】と書き込み・・再びセルC5を選択し・・これはオートフィルでセルR5まで数式をコピー・・。
記録したい操作はこれで終わったので・・【開発】タブの【記録終了】をクリック・・。
これで記録マクロの作成は終了・・記録された内容は・・【開発】タブの【マクロ】をクリック・・【マクロ名】やりなおしを選択し・・【編集】をクリックするとみることが出来ます・・。
出来上がったマクロのコードは

Range(“C5”).SelectからRange(“C5:R5”).Selectまでをコピーし・・テキストエディターにコピーしておきます。

このテキストファイルは後でイベントマクロ作成時に使用するので保存しておいてね・・。
イベントマクロの作成
イベントマクロを作る方法は ワークシートのシート名のタブを右クリックして・・コードの表示をクリック・・。

すると・・VBSのモジュールが表示される・・モジュールの上部に2つのプルダウンがあり初期の状態では・・(General)と(Declarations)
これを・・(General)は Worksheetに(Declarations)はChangeに変更・・。

これがイベントの指定・・WorksheetがChange(変更)されたらマクロを実行するということ・・。
ここで設定されたイベントはワークシートが変更されたら実行する・・ということに・・。
すると・・Private Sub Worksheet_Change(ByVal Target As Range)と表示される

これは・・よくわからないけど・・“ワークシートのセルが変更されたら”という意味っぽい感じ・・。
Target As Rangeというのは・・対照のセルという意味っぽいので・・対象セルを指定する必要が有りそう・・。
対象セルの指定
マクロを実行するための変更されるセルを指定する・・これ・・チョット難しいですよね・・こんな時はGoogleに聞いてみることに・・。
Googleの検索窓に「Excel特定のセルを変更したらマクロを実行」と書き込んで検索すると・・沢山ヒットしますよね・・。
イベント対象のセルを指定する方法はいくつかあるようですが・・今回は・・
If Not Intersect(Target, Range(セル範囲)) Is Nothing Then
End If
これが分かりやすいかと・・。
IFとEND IFの間に実行したいマクロのコードを書き込めばOK

コピペでマクロを作成
まずは・・セル範囲を変更します・・セル範囲の部分に【C2:J2】と書き込み・・。
IFとEND IFの間に・・先ほどテキストエディターにコピーしたマクロコードを貼り付けます。
次に【Range(“C5:R5”).Select】を・・【Range(“K2:R2”).Select】に書き加える・・これは・・連結セルC2:J2が変更された後は連結セルK2:R2を選択させるため・・。
こうすると操作がスムーズになるかも・・。

同じマクロをもう一つ作成 今度は連結セルK2:R2が変更委さらた時のマクロを作成することに・・。
If Not IntersectからEnd IFをコピーして・・End Ifの下に貼り付け。

【If Not Intersect(Target, Range(“C2:J2”)) Is Nothing Then】のセル範囲を・・【K2:E2】に書き換え・・。
最後のRange(“K2:R2”).Selectを・・【Range(“C2:J2”).Select】に書き換えます。

ワークシートの保護
セルに数式が入ったワークシートは保護していたほうが良いかと・・。
ワークシートを保護しないと・・数式がおかしくなって上手く動かなくなることも・・。
今回はあえて数式の入ったセルを編集しているのでなおさら・・。
では・・その方法は・・。
セルの保護を解除
セル内の数値を変更する必要が有るセルは・・保護の対象からはずす必要が有ります・・。
対象のセルを選択して・・右クリック・・【セルの書式】を選択し・・【保護】タブの【ロック】のチェックを外して保護を解除しましょう。
ここでは・・連結セルのC2:J2とK2:R2・・そしてC5からR5までのセルがそれに相当・・これらのセルの【ロック】を解除しましょう。
セルの色分け
この状態でセルを保護してしまうと・・数値を変更できるセルがどれなのか、わかり辛いことになるので・・編集できるセルを色分けするようにします。
連結セルC2:J2とK2:R2は黄色に・・。セルC5からR5は緑色にしておきます
更に4行目は表示する必要が無いので非表示にします。
そしてワークシート名を右クリックして・・【シートの保護】を選択・・Excelが何か聞いてくるけど【OK】をクリックすればOK
まとめ
Excelのマクロの記録マクロを使えば・・関数や数式で出来ないことを補足できる。
記録マクロで作ったマクロを・・イベントマクロを使って・・自動でマクロを動かせば便利
ちちくろ目線 