自前でマクロを作ろう!作成例など | エクセルマクロマスターへの道!【基本をしっかり!初心者向け勉強方法~作成方法・使い方】

カテゴリ: 自前でマクロを作ろう!作成例など

エクセルマクロのデータファイル移動先を、VBEのコードで変更してみよう!

エクセルマクロについて、次のような疑問があったときについて、考えてみましょう。

エクセルのマクロで、ファイル間でデータを移動させるようにしたいけど、違うパソコンやドライブでもデータを移動できるようにしたい!
同じパソコン、同じドライブのパスでできるマクロは完成済み。

このときは、マクロのコードの記述内容を変更して、データが移動できるようにします。

まずは、エクセルの「メニュー」から、「ツール」をクリックし、「マクロ」から「Visual Basic Editor」を選んでください。
ALT+F11キーでもOKです。

ここでこのVBE画面を見てみましょう。
「プロジェクト」というところに、タイトルウィンドウという、エクスプローラのような図がありますね。
ここの、「標準モジュール」を開き、「Module1」という名前がついているところをダブルクリックすると、このマクロの内容であるコードが書かれた、Module1のウィンドウが開きます。

この中に、ファイル移動先のパスが書かれているので、移動先パスを変更しましょう。
これで、違うパソコンや、違うドライブでもデータを移動することができるようになりますね。

このマクロを使って、しばしばファイル間でデータ移動するのなら、マクロそのものを使いやすいように変更したほうがいいですが…
しょっちゅう使うわけでもないなら、このパス変更だけでも利用できるでしょう。

VBEや、マクロにもいろいろできることがあるので、勉強する余地もたくさんあります!
マクロ自体を書きかえたり、さらに高度なことをやりたいなら、VBEの使い方について学ぶ必要がありますね。

VBAコードを修正してエクセルマクロの内容を変えてみよう!

エクセルファイル上で、あるボタンをクリックしたときにメッセージが表示される、といった、かんたんなマクロを作った場合を例にあげて、エクセルのマクロを修正する方法をお話していきますね。

このマクロのプロシージャ名を「cmd実行_Click」として、表示されるメッセージは「マクロ完成!!」だとします。

このとき、「cmd実行_Click」の内容を変更することで、マクロの中身をいろいろなものに変えていくことができるんです。
例えば、設定されている表示メッセージ「マクロ完成!!」を、「マクロの修正完了!!」というものにするやり方を説明してみます。

まずは、エクセルの画面から、メニューをクリックし、「ツール」→「マクロ」→「Visual Basic Editor」を選び、VBEの画面を表示させます。
ここで、メッセージボックスの表示内容を変更してみましょう。

Private Sub cmd実行_Click()
      msgbox ”マクロ完成!!”
End Sub

これを、次のように書きかえます。

Private Sub cmd実行_Click()
      msgbox ”マクロの修正完了!!”
End Sub

コードが書き換えられたら、デザインモードを終了し、もとのエクセル画面に戻ってください。
そして、ワークシート上の、マクロを実行するコマンドボタンをクリックするか、直接マクロ名を指定して実行してみましょう。

「マクロの修正完了!!」というメッセージが表示されたら、マクロの修正がきちんとできています。

このマクロが設定されているエクセルファイルを、マクロ作成のテスト用ファイルに使うこともできるので、テスト用.xls、などの名前をつけて保存しておくと、マクロ作成の練習によいですね。

エクセルのデータにマクロでふりがなをふる手順

データベースとしてエクセルを使用することもありますが、このとき「ふりがな」はなかなか大切ですよね。
データをうまく扱っていくのにも便利なふりがなですが、エクセルの機能には「フリガナをふる」や「PHONETI関数でフリガナを取得する」などさまざまなものがあるので、必要に応じて使い分けたいもの。

日本語入力と感じの関連の問題で、これらのふりがな機能にも不完全な部分もありますけどね。

また、エクセル上で入力された読みがなだけを、「ふりがな」として認識することも弱点のひとつ。
つまり、ふりがなの情報が入っていない場合、画面にはふりがなを表示することができないのです。

ツールから、ふりがなをふるとき、CSVファイルをエクセルにインポートして使うとすると、読みがなの情報は保持されていない状態です。
すると、メニューから「書式」→「ふりがな」を選び、表示、非表示を選択しても、ふりがな情報がないため、表示されないのです。

こんなときは、マクロを使って「PHONETIC関数」でふりがなをふるとよいでしょう。

PHONETIC関数を使いふりがなをふる、というマクロのコード記述は、次のようになります。

Sub Phonetic-Furigana()
Selection.SetPhonetic
Selection.Phonetics.Visible = True
End Sub

これを、VBEで記述し、マクロを作成します。
こうして作ったマクロを、ふりがなをふるセル上で実行ボタンを押したりして実行すると、ふりがなを表示することができるはずです。
いちど試してみてくださいね!

エクセルのデータ処理範囲を自動的に選択するマクロのコード例

エクセルに、データを入力して管理する機会も多いですよね。
このデータから、何かの条件で検索したり、いろんな作業をすることがありますが、データの量もどんどん増えていくものです。
そうすると、検索範囲も毎日変わっていくので、検索する対象セルをいちいち直さなければならないのが面倒、って経験ありませんか?

それでは、マクロでこの作業を簡単にするための、範囲選択のコード記述例をご紹介します。
1行1データの形式で入力されている場合です。

①アクティブセル領域を選択する方法
Sub kettei1()
Dim TBL As Range

Worksheets(”Sheet1″).Activate:Range(”A1″).Select
‘セルA1を含めたアクティブセル領域を選択(空白行・列で囲まれたセル範囲)
Set TBL = ActiveCell.CurrentRegion
TBL.Select
End Sub

②表題などをのぞくアクティブセル領域を選択する方法
Sub kettei2()
Dim TBL As Range

Worksheets(”Sheet1″).Activate:Range(”A1″).Select
‘セルA1を含めたアクティブセル領域を選択(空白行・列で囲まれたセル範囲)
Set TBL = ActiveCell.CurrentRegion
Set TBL = TBL.Offset(1,0).Resize(TBL.Rows.Count -1,TBL.Columns.Count)
‘1行下から、全体より1行少ない部分を設定
TBL.Select
End Sub

自動記録を使わずに「Visual Basic Editor」を使ってエクセルマクロを作成!

エクセルマクロを、作業を自動記録する機能を使って作成する方法もあります。
でも、マウス、キーボードの操作では処理しきれないものは、自動記録でマクロ作成できないので、別の方法で作る必要があります。

ここでは、「ファイルを開く用」というマクロ名のマクロを修正する手順についてご紹介します。

ツールバーから「Visual Basic Editor」ボタンを押すか、メニューから「ツール」→「マクロ」→「Visual Basic Editor」を選択して、Visual Basic Editorを表示させます。
プロジェクトウィンドウから、「モジュール」または『標準モジュール」を選びダブルクリックしてください。
すると、module1というマクロ名が出てくるのでダブルクリックすると、小さいウィンドウにコード画面が表示されますね。

ここで、ファイルを開くマクロに、メッセージを表示されるような修正を加えていきます。
ファイルを開くマクロの前に、「msgbox ”ファイルを開きます” 、、 ”メッセージの表示”」と、
ファイルを開くマクロの後ろに「msgbox ”ファイルを開きました” 、、 ”メッセージの表示”」とそれぞれ入力しましょう。

このように書き加えたマクロは、Visual Basic Editorを閉じるボタンで終了するなどしてエクセルのワークシートに戻ると、保存することができます。

では、このように修正したマクロを実行してみましょう。
マクロを実行するボタンをクリックするか、または、「ツール」から「マクロ」→「マクロ」を選択すると実行されます。
マクロ名「ファイルを開く用」を選び、実行ボタンを押すと、さきほどコードに書いたメッセージダイアログが表示されて、Okボタンを押したらファイルが開けば、成功です。

エクセルのマクロで重量計算するコード記述

エクセルで、箱の重量を計算して結果を表示させる作業を、マクロをつかってする方法を考えてみましょう。
高さ×幅×奥行き、という計算式を使うものとします。
材料の単位当たり重量は、エクセルで別の表に入力済みです。

数種類の材料のなかから、オプションボタンで材料を選択して重さを計算して結果を表示する、という感じにしたい、としましょう。

これを、ただ単にエクセルで表にして計算したら、すべての材料の重さが表示されたりしてややこしく、結果も見にくくてわかりにくくなりそうです…
これを、見ていてすっきりわかるように計算させるマクロは、どのようなコードを組めばよいでしょうか。

今回は、材料を3つ選択するものとして、マクロのコード記述例をあげてみますので、参考にしてみて下さい。

(A2セルに高さを、B2セルに幅を、C2セルに奥行きを、D1セルにオプションボタンへのリンク先、E1~3セルに材料の単位当たり重量を入力するものとします)

Sub 重量計算()
Dim H As Variant
W As Variant
L As Variant

H = Range(”A2″).Value   ‘高さ
             W = Range(”B2″).Value ‘幅
L = Range(”C2″).Value ‘奥行き

Select Case Range(”D1″).Value
Case 1
MsgBox “箱の重さは” & H*W*L*Range(”E1″).Value & “です。”,,”計算結果です。”
             Case 2
MsgBox “箱の重さは” & H*W*L*Range(”E2″).Value & “です。”,,”計算結果です。”
Case3
MsgBox “箱の重さは” & H*W*L*Range(”E2″).Value & “です。”,,”計算結果です。”
End Select

End Sub

これで、オプションボタンで選択した材料の重量ごとに、重さを計算した結果がメッセージボックスで表示されるはずです。

エクセルマクロ初心者の方へ!条件付け処理のVB記述

エクセルのマクロ作成に挑戦しよう!と、VBを覚えたりして勉強中の初心者の頃には、まだまだ学ぶことも多くて、すぐに問題発生してしまったりして悩むものですよね。

たとえば、セルの値によって条件付けをしたいときについて考えてみましょう。
あるセルの値がもし「A」であれば「マクロA」を実行して、もし「B」なら「マクロB」を実行する、などといった場合です。
初心者のうちは、こういうパターンをやるのもなかなかたいへんですよね?

とはいえ、このようにセル内容の条件によって、別々のマクロを実行する方法は、ちょっと難しい処理が必要なので、同じように、セルの内容によってちがう処理を行う、というマクロについて説明します。

このとき、VBのコードは次のようになります。

Sub test()
If Range(”A1″).Value=A Then
●セルA1の値が「A」であるときに実行する処理●
Else
If Range(”A1″).Value=B Then
  ●セルA1の値が「B」であるときに実行する処理●
Else
  ●セル「A1」の値がAでもBでもないときに実行する処理●
End If
End If
End Sub

こうすると、セルの値がAのとき、Bのとき、どちらでもないときで、行う処理を条件付けすることができます。
Aの場合、Bの場合について記述したあと、最後に「A、Bどちらでもない値のとき」についての処理を記述していますが、このほうがいろんなケースで対応しやすくてよいのではないでしょうか。

条件によって○印をつけるエクセルマクロの作成例

エクセルであるデータを管理しているとき、シート上に「男」「女」や「夫」「妻」など、何カ所かに選択欄があり、どれかに「○」印をつけていきたい場合を考えてみましょう。

オートシェイプを使って、○印をつけていくこともできますが、データの量が多いときなどは、手間がかかってたいへんですし、間違えることもありそうですよね。

それでは、ある条件のときに印をつける、というマクロを作成してみましょう。

まずは、「ALT」+「F11」キーで、VBEを開きます。
そして、次のようなマクロのコード記述をしてください。

Sub sirusi()
Dim a As Range
If TypeName(Selection) = “Range” Then
Set a = Selection
ActiveSheet.Shapes.AddShape(msoShapeOval,a.Left,a.Top,a.Width,a.Height).Select
Selection.ShapeRange.Fill.Visible = msoFalse
a.Select
End If
End Sub

以上のコードを、VBEエディタ上に記入したら、画面を閉じ、ワークシートに戻ります。

それでは、「ALT」+「F8」キーで、マクロ一覧を開き、このマクロを実行してみましょう。
マクロ「sirusi」を選択した状態で、「オプションボタン」などから、マクロへのショートカットを設定しておきます。
とりあえず、「Y」という文字をショートカットに入れましょう。

それでは、適当なセルを選択し、「Ctrl」+「Y」を押してみましょう。
さきほど設定したショートカットで、作成した「sirusi」というマクロが正しく実行されると、そのセルに「○」が表示されます。

「Trim」を使って空白を除去するエクセルマクロをつくってみよう

エクセルに入力されているデータで、セルの値のなかに、空白を含んでいるものがある場合がありますよね。
こういうデータを、何かの目的でソートしてから使いたいのに、文字列の最初や途中に空白があるのでちゃんと並び替えられない…って場合があります。

そこで、「Trim」という命令を利用し、空白を取り除くエクセルマクロを作ってみましょう。
「Trim」は、文字列のなかの空白を除去して、文字列を返すという関数です。

VBE画面から、次のようなプログラムを作成してみます。

Sub 空白除去プログラム()
Dim abc As Range ‘セルを定義

For Each abc In Selection
abc = Trim(abc) ‘左右の空白を削除、「abc」を置き換える
  Next

End Sub

これを実行すると、セル内の文字列から空白が取り除かれます。

また、エクセルの使い方のちょっとしたコツなのですが、選択セルを指定するときに、Ctrlキーを押しながらマウスでクリックすると、とびとびのセルを選択範囲にすることができます。
連続するセルを選択範囲にするには、ShiftキーとCtrlキーを押しながら矢印キーで、まとめて選択できます。

これらのテクニックをあわせて使うことで、空白除去したいセルをまとめて処理することもできるので、参考にしてみてください。

ちなみに、Trim関数には次のようなものがあるので、使い道によっていろいろ使い分けると便利ですよ。
Trim(abc) : 文字列の左右の空白を削除する
RTrim(abc) : 文字列の右側の空白を削除する
LTrim(abc) : 文字列の左側の空白を削除する
Application.Trim(abc) : 文字列の左右または途中の空白を削除する