人気ブログランキング |

タグ:VBA ( 5 ) タグの人気記事

自作マクロのリボンへの登録方法

TH69です。

今回は「個人用マクロブック」に登録した自作マクロを、いつでもすぐに使えるようにエクセルのリボンに登録する方法について説明します。


1)まずエクセルが開いていない状態で新しいブックを開いてください。(新しいブックでないと開いているブックのマクロが全て表示されるためです)そして「リボンのユーザー設定」の画面を開きます。

 メニューバーのファイルをクリックし
自作マクロのリボンへの登録方法_e0382354_20174664.gif



2)移動した画面のオプションをクリック
自作マクロのリボンへの登録方法_e0382354_20174620.gif



3)出てきた「Excelのオプション」の「リボンのユーザー設定」をクリックします。
自作マクロのリボンへの登録方法_e0382354_20174681.gif


4)上の手順が一般的ですが邪魔臭いので、
 メニューバーの上で右クリック>リボンのユーザー設定をクリックが便利です。
自作マクロのリボンへの登録方法_e0382354_20313777.gif


5)「リボンのユーザー設定」の右側下にある「新しいタブ」をクリックします。
自作マクロのリボンへの登録方法_e0382354_20183430.gif



6)するとメインタブに「新しいタブ(ユーザー設定)」というタブとその下に「新しいグループ(ユーザー設定)」が追加されます。
自作マクロのリボンへの登録方法_e0382354_20183517.gif



7)「新しいグループ(ユーザー設定)」が選択された状態で左側の「コマンドの選択」の▼をクリックし、出てきたリストの「マクロ」を選択します。
自作マクロのリボンへの登録方法_e0382354_20183548.gif



8)すると多分「個人用マクロブック」に登録したマクロ一覧が表示されますので、その中から新しいグループに登録したいマクロを選択し「追加」ボタンをクリックします。
自作マクロのリボンへの登録方法_e0382354_20183562.gif



9)登録したいマクロ(この場合は「行列番号切替」)が「新しいグループ(ユーザー設定)」の下に追加されました。他にも登録したいマクロがある場合は、上記(8)を繰り返して下さい。追加が完了したら「OK」ボタンをクリックして画面を閉じます。
自作マクロのリボンへの登録方法_e0382354_20190735.gif


10)メニューバーに「新しいタブ」というタブ(名前の変更は可能です)が追加され、タブを開くと「行列番号切替」マクロが表示されました。
自作マクロのリボンへの登録方法_e0382354_20190792.gif

これで結構マクロの使用が便利になったと思いますが、マクロショートカットなどを使うとさらに速くマクロを実行させることができます。

機会があったらその辺りの事についても記事にしようと思います。

では。



by th1252 | 2019-09-09 00:17 | Excel | Trackback | Comments(0)

個人用マクロブックの使い方

TH69です。

今回はエクセルのマクロネタですので、興味のない方は読み飛ばして下さい。

新しいPCでは「個人用マクロブック」という便利なエクセルの機能をまだ使っていないので、いい機会と思いその使い方を記事にしてみました。「個人用マクロブック」は汎用のマクロなどをいつでも使えるように登録できる機能で、使い方によっては邪魔臭い作業を大幅に短縮することができます。

エクセルのリボンに「開発」が表示されていない場合は、ファイル>オプション>リボンのユーザー設定を開いて「開発」にチェックを入れて表示させて下さい。
個人用マクロブックの使い方_e0382354_13303787.gif

では、「個人用マクロブック」を実際に使ってみましょう。

今回は行列番号の表示と非表示の切り替えをやってみたいと思います。

何でもいいのでエクセルのブックを開き「開発」タブを表示すると、そこに「マクロの記録」がありますのでクリックします。
個人用マクロブックの使い方_e0382354_13303795.gif


すると「マクロの記録」ウインドウが開きますので、「マクロの保存先」の右端にある▼をクリックし、「個人用マクロブック」を選択し「OK」ボタンを押します。
個人用マクロブックの使い方_e0382354_13303830.gif


「OK」ボタンを押すとマクロの記録が始まりますので、ファイル>オプション>詳細設定>次のシートで作業するときの表示設定にある「行列番号を表示する」のチェックを外し「OK」ボタンをクリックします。
個人用マクロブックの使い方_e0382354_13483639.gif


元の画面に戻ったら開発タブの「記録終了」をクリックしてマクロの記録を終了させます。行列番号は非表示になっていますね。
個人用マクロブックの使い方_e0382354_08513947.gif


そして同じ開発タブの「Visual Basic」をクリックします。
個人用マクロブックの使い方_e0382354_08514003.gif


すると「Visual Basic for Applications」というウインドウが開きます。よく「VBA」とか言ってるあれですね。この画面はVisual Basic Editor(VBE)というもので、VBAのコードを編集するためのエディタとなります。
個人用マクロブックの使い方_e0382354_13571376.gif


その左画面にある「VBAProject(PERSONAL.XLSB)」のツリーを開き、標準モジュールにある「Module1」を開きます。すると何かプログラムのコードのようなものが表示されます。これが今マクロ記録した「行列番号非表示」のVBAコードとなります。
(この「PERSONAL.XLSB」が個人用マクロブックの本体で、通常は非表示のブックです。)

先頭がシングルコーテーションの行はコメントなので、結局VBAコードとしては「ActiveWindow.DisplayHeadings = False」だけのようです。簡単ですね。英語が苦手な私でも何となくわかります。「アクティブウインドウの行列番号表示→しない」みたいです。
個人用マクロブックの使い方_e0382354_14015666.gif


それでは試しに「= False」の部分をクリアし、「=」を入れてみましょう。すると下の画像のようにリストが表示されますので、Trueを選択してダブルクリック(もしくはTabキー)で確定させます。「True」なので、多分行列番号が表示されるはずですね。
個人用マクロブックの使い方_e0382354_14221972.gif


VBE画面のツールバーに右三角の実行ボタンがありますので押してみましょう。その時どのマクロを実行するのかVBEは判断できませんので、カーソルを実行したいマクロの「Sub~End Sub」の間に置くようにしてくださいね。
個人用マクロブックの使い方_e0382354_14255390.gif



思い通りに行列番号が表示されました。簡単ですね(笑)。
でも、これはこれで邪魔臭いですね。行列番号の表示非表示を切り替えるためにVBEを操作するなんて考えられません(汗)。では、「ActiveWindow.DisplayHeadings = True」と「ActiveWindow.DisplayHeadings = False」のマクロを作って利用しましょうか。(私も昔はそのようにしていました)でも「True」と「False」を切り替えるだけなので、何とか一つのコードに収められそうです。
個人用マクロブックの使い方_e0382354_08514087.gif


ここからはVBAのプログラミングになりますね。まずマクロ一覧に表示されるマクロ名である「Macro1」(数字部分は変わる場合があります)の部分を、分かりやすい「行列番号切替」などに変更します。その時に「半角スペース」や「()」などは変更しないように注意してくださいね。
個人用マクロブックの使い方_e0382354_14342362.gif



次に「ActiveWindow.DisplayHeadings = True」の頭に「if」と入力します。「if」の後ろには半角スペースを入れます。そして半角スペースを空けて「then」と入力し確定します。勘のいい方ならわかると思いますが動きは数式内のIF関数と同じで、「If~Then〇」で「もし~だったら〇を実行」となります。VBAでは「IF文」と言います。

このコードは「アクティブウインドウの行列番号が表示だったら〇を実行」となりますね。
個人用マクロブックの使い方_e0382354_14390895.gif


「アクティブウインドウの行列番号が表示だったら」どうしたいかというと非表示にしたいわけですから、
「ActiveWindow.DisplayHeadings」と入力して(コピペでいいです)「=」を入れ、出てきたリストから「False」を選択して確定します。
個人用マクロブックの使い方_e0382354_14480710.gif



そして改行して「else」と入力します。数式内のIF関数の「もし~でなかったら●」の部分ですね。
個人用マクロブックの使い方_e0382354_14511309.gif


この場合「アクティブウインドウの行列番号が表示でなかったら(非表示だったら)」何がしたいかというと、表示したいわけなので「ActiveWindow.DisplayHeadings = True」(コピペでいいです)と入力します。
個人用マクロブックの使い方_e0382354_14543408.gif

さらに改行して「end if」と入力します。これはIF文を使う場合の決まり事で、これがないとIF文がどこで終了するのか分からないので必ず入力します。
VBAのIF文は基本中の基本なので、『If~Then〇(Else●)End If』は定型文として覚えておくと便利です。数式でIF関数が使える人なら何の問題もなく理解及び使用ができると思います。(「Else」がカッコなのは使用しない場合もあるからです。)
個人用マクロブックの使い方_e0382354_14593664.gif


VBEでのVBAコード編集作業はこれで終了となります。実際に動くかどうか「実行ボタン」を何度か押して行列番号の表示と非表示が切り替わることを確認してくださいね。
お疲れさまでした。

でも、このままでは個人用マクロブックの利用はできませんので注意してください。個人用マクロブックを利用する設定を保存しないといけないためです。

ブックを閉じる時に下の画像のようなダイアログが出ると思いますが、ここで「すべて保存」をクリックすることにより個人用マクロブックが有効になります。次回エクセル起動時より非表示で「PERSONAL.XLSB」が開き、そこに登録されたマクロを使用できるようになります。
個人用マクロブックの使い方_e0382354_14593648.gif


それから今回作ったマクロ「行列番号切替」を利用する場合は、開発タブのマクロをクリックします。
個人用マクロブックの使い方_e0382354_14593618.gif


そこで出てきたマクロウインドウのマクロを選択し実行ボタンを押します。
個人用マクロブックの使い方_e0382354_14593639.gif


これで今までの『ファイル>オプション>詳細設定>次のシートで作業するときの表示設定』からやるよりはかなり楽になりましたが、まだ邪魔臭い気がします。

次回(があればですが…)は、もっと簡単にマクロを利用できるようにする方法をアップしたいと思います。

同じやり方で汎用マクロ(設定関係が特に便利です)が色々個人用マクロブックに登録できますのでお試しください。ご質問等あればコメントなどでお願いします。

では。

【参考コード】
Sub 行列番号切替()

If ActiveWindow.DisplayHeadings = True Then
ActiveWindow.DisplayHeadings = False
Else
ActiveWindow.DisplayHeadings = True
End If

End Sub

(可読性をアップするVBAコードのインデント(字下げ)はTabキーで)

にほんブログ村 米国株
by th1252 | 2019-08-10 15:42 | Excel | Trackback | Comments(0)

VBAコードを自動インデントしてくれる「Smart Indenter」のインストール

TH69です。

今回はExcelVBAネタですので、興味のない方は読み飛ばして下さい。と、前回と同じ展開で…(笑)

VBAコードを自動インデントしてくれる超便利なExcelVBAアドイン「Smart Indenter」のインストールについては、自分で書こうと思いましたが以下のリンク先記事の方が詳しく分かりやすいと思います。(私もこちらの記事を参考に作業しました)



Windows10で「Smart Indenter」が使用できない原因はシステムファイルに「msaddndr.dll」がないためなので、それをインストールしてやると使えるようになるみたいです。

分からない点があったら、コメントやメールなどでご連絡お願いします。

では。



by th1252 | 2019-03-16 10:59 | Excel | Trackback | Comments(0)

VBAコードを自動インデントしてくれる「Smart Indenter」のダウンロード

TH69です。

今回はExcelVBAネタですので、興味のない方は読み飛ばして下さい。

最近、東芝ダイナブックのノートPC(Win7)の動作不安定さからDELLのノートPC(Win10)に換えたのですが、VBAコードを自動インデントしてくれる超便利なExcelVBAアドイン「Smart Indenter」 のインストールがまだだったのでやろうとしたところ…

無い~!(汗)

いつもDLしたソフトのファイルをバックアップ保存しているフォルダに、目的のファイル「IndenterVBA.exe」が見つかりませんでした。こういうありがたい貴重なソフトは必ずバックアップしているのに、なぜかこのファイルは保存されていませんでした。

仕方ないので本家サイトからDLしようとしたところ…

無い~!(汗)

本家サイトの「Smart Indenter」のリンクがリンク切れになっていました(涙)。

それで色々試行錯誤していたところ、グーグル検索で直接目的ファイルの「IndenterVBA.exe」を検索したらダウンロードできるサイトが見つかりましたので紹介しておきます。


1)Auto-download.comのページ「IndenterVBA.exe」を開き、「Download IndenterVBA.exe (server 1)」をクリックします。

VBAコードを自動インデントしてくれる「Smart Indenter」のダウンロード_e0382354_12281817.gif


2)開いたページの「Get link」ボタンをクリックします。

VBAコードを自動インデントしてくれる「Smart Indenter」のダウンロード_e0382354_12281836.gif


3)「input Captcha」の入力欄に、表示されているCaptcha(この場合は74899)を入力し、「Download」ボタンをクリックします。

VBAコードを自動インデントしてくれる「Smart Indenter」のダウンロード_e0382354_12281995.gif


4)すると「IndenterVBA.exe を開く」ダイアログボックスが開きますので、「ファイルを保存」ボタンをクリックしファイルを保存します。

VBAコードを自動インデントしてくれる「Smart Indenter」のダウンロード_e0382354_12281954.gif


5)「IndenterVBA.exe」がDLできたら、保存先の「IndenterVBA.exe」を実行すると「Smart Indenter」がインストールされます。

でもインストールはちょっと待ってください!!

お使いのPCがWin7までならOKですが、Win10の場合は「Smart Indenter」が使用できないようです。Win10で「Smart Indenter」を使えるようにする方法は次の記事で紹介します。

ホンマ、ネットはありがたいモンですね。

では。(=^_^=)



by th1252 | 2019-01-20 12:49 | Excel | Trackback | Comments(0)

【エクセル】マクロショートカット競合(重複)対策

TH69です。

今回はエクセルのマクロねたですので、興味のない方は読み飛ばして下さい。

エクセルのマクロにはそれぞれ「マクロショートカット」が設定でき、通常は「Ctrl」キー + 「英文字」キーを設定します。「Ctrl」キーと「登録したキー」を同時押しすると、マウスや他の操作なしにマクロの実行が可能になる便利な機能です。ただ「s」や「v」などは、それぞれエクセル自体のショートカットとして登録されているため、マクロショートカットにはあまり登録しません。となると登録できるキーはかなり限られてくるわけで、当然複数のブックで同じマクロショートカットを設定しまうことが発生します。

そのときに問題になるのが、マクロショートカットでは「複数開いたブックのアクティブでないブックのマクロも実行されてしまう」と言うとんでもない動作なのです。具体的に言うと、マクロを実行したいブックしか開いていない場合やマクロボタンで実行する場合は問題ありませんが、同じマクロショートカットを登録したブックが複数開いていると、マクロを実行したいブック(アクティブブック)ではない裏で開いているブックのマクロが意図せずアクティブブックで実行されてしまう事がある、と言うことです。

これは本当にとんでもないことで、マクロを実行したかったブックの内容が全て書き換えられて上書き保存して終了、などという本来あってはならない事態も発生する可能性があります。私もこれで何度か痛い目にあいましたが(常にバックアップは取っているので、被害は最小限でしたが…)、マクロに以下のコードを入れることにより発生を防止することができるようになりました。

【エクセル】マクロショートカット競合(重複)対策_e0382354_10192017.gif

【コード例】
Sub マクロショートカット競合対策()
If ActiveWorkbook.Name = ThisWorkbook.Name Then

 (やりたい処理)

Else
MsgBox "ご利用のマクロは他のファイルと競合しています", vbInformation
End If
End Sub


VBAのコード的には簡単なIF文なのですが、

もし、アクティブブックの名前がこのブック(マクロを実行しているブック)の名前と同じなら

 (やりたい処理)を実行

そうでなければ
「ご利用のマクロは他のファイルと競合しています」というメッセージボックスを表示して
マクロを終了します。


【エクセル】マクロショートカット競合(重複)対策_e0382354_10425192.gif

誰かの役に立てば嬉しく思います。(=^_^=)


にほんブログ村 米国株


by th1252 | 2018-03-31 12:40 | Trackback | Comments(0)