![記事キャッチ画像](https://livedoor.blogimg.jp/gadgets_geek/imgs/4/5/453e23c1.png)
1. 個人用マクロブック の格納フォルダ
2. 標準の XLSTART フォルダ
3. 任意の XLSTART フォルダとして、OneDrive内を指定可能
(注) 他ブックのプロシージャのため、VBAコードもワークシートも呼び出しが少し面倒に!
「広告」
(09) 作成した「ユーザー定義関数」を他のブックから呼び出す方法を説明!
Excel メニューバーの [ヘルプ] - [更新プログラムのチェック] にて、適用されていないアップデートがあれば行ってください。Excel 2016 for Mac 環境での説明となりますので、 Mac版 Excel 2011 では( VBA が利用できますが )同じ結果にならない場合があるかもしれません。
現状、 VBE 内で日本語を記述すると(貼り付けのみ可能な場合あり)乱れたり、保存時にクラッシュすることが多いため、 VBAコード は「未変換の英数字のみ」で記述してください。(テキストエディタからの貼り付けは可能)
1. 個人用マクロブック の格納フォルダ
前回使用した XLSM ファイルを、「マクロを有効」にして開きます。![19](https://livedoor.blogimg.jp/gadgets_geek/imgs/1/3/13aebcb3-s.png)
[マクロの記録] をクリック後、保存先に「個人用マクロブック」を指定して記録を始めます。
![20](https://livedoor.blogimg.jp/gadgets_geek/imgs/7/8/78a2ca28-s.png)
「A1」セルをマウス選択後、 [記録終了] をクリックして記録を終了します。
![21](https://livedoor.blogimg.jp/gadgets_geek/imgs/8/4/848ab0a9-s.png)
[alt (option) ] + [F11] で VBAコードを表示すると、「個人用マクロブック」内の Module1 に記録されたコードが保存されています。
![50](https://livedoor.blogimg.jp/gadgets_geek/imgs/4/7/47f602fe-s.png)
Excel 終了時に表示される画面で[保存] をクリックし、「個人用マクロブック」を保存します。
1. のこれ以降は OneDrive 利用者のみの説明となり、複数の Mac(Book) をお持ちの場合は「個人用マクロブック」を共用できるため 便利です。
OneDrive を利用されていない方は、PCローカルに保存される「個人用マクロブック」をそのまま使用すれば良いかと思います。
ただし、Windows版の Excel2016 は 「XLSTART」フォルダを任意に指定できないため、共用できませんでした。
「共有ブック」の機能が改善されたからでしょうか?
Windows版 Excel2016 で OneDrive 内の任意フォルダを「XLSTART」フォルダとして指定する方法を知っている方はコメント頂けるとありがたいです。
(「XLSTARTフォルダ」の説明は、2. にて! )
![18](https://livedoor.blogimg.jp/gadgets_geek/imgs/3/3/33c2a4fd-s.png)
上記フォルダ(フォルダ表示方法はこちら)内の「個人用マクロブック」ファイルを OneDrive 内に作成した「XLSTARTフォルダ」にコピー後、ファイル名を「PERSONAL.XLSB」に変更します。
上記フォルダ内の「個人用マクロブック」は削除します。
「個人用マクロブック」と共存可能でややこしいため、Windows版 Excel の「個人用マクロブック」と同じ「PERSONAL.XLSB」という分かり易いファイル名(拡張子.XLSB推奨)に変更しました。
また、 OneDrive 内に作成した「XLSTARTフォルダ」は違うフォルダ名でもかまいませんが、専用フォルダを新しく作成し「拡張子.XLSBの共有したいExceファイル」のみを格納してください。
![52](https://livedoor.blogimg.jp/gadgets_geek/imgs/2/6/26ca6fdf-s.png)
まずは、OneDrive 内に「XLSTARTフォルダ」を作成し、「PERSONAL.XLSB」のみを格納する。
分かり易いフォルダ名にしただけで、別に他のフォルダ名でも構わない。
次に、前回使用した XLSM ファイルを、「マクロを有効」にして再度開きます。
![05](https://livedoor.blogimg.jp/gadgets_geek/imgs/3/5/35ebc132-s.png)
Excel メニューバーの [環境設定] - [全般] 画面にて!
「起動時にすべてのファイルを開くフォルダー」指定の右側 [選択] ボタンから、OneDrive内に作成した「XLSTARTフォルダ」を指定する。
![31](https://livedoor.blogimg.jp/gadgets_geek/imgs/7/8/78632173-s.png)
(注) [ホーム] - [書類] - [OneDrive] フォルダはリンクしており、実フォルダは OneDrive 内となる。
![03](https://livedoor.blogimg.jp/gadgets_geek/imgs/8/3/83f263fa-s.png)
[OneDrive] - [ドキュメント] - [XLStart] フォルダを指定する。
![21](https://livedoor.blogimg.jp/gadgets_geek/imgs/4/5/453e23c1-s.png)
[alt] + [F11] にて PERSONAL.XLSB あるいは 個人用マクロブック の VBAコードが表示されなければ、一度 Excel を終了し、前回使用した XLSM ファイルを「マクロを有効」にして再度開きます。
![45](https://livedoor.blogimg.jp/gadgets_geek/imgs/e/4/e40a0cc1-s.png)
PERSONAL.XLSB あるいは 個人用マクロブック の Module1 内に赤線で示した2つの関数記述を追加します。
Public Function MyFuncA(ByVal n As Integer) As Long
Rem 【Excel関数 FACT(n) 】を実装(VBAでもC言語みたいに再帰関数を記述可!)
Rem 【ExcelVBA の便利な所】は、自分で作成した関数をワークシートから呼び出せる点
If n > 1 Then
MyFuncA = n * MyFuncA(n - 1)
Else
MyFuncA = 1 ' (n <= 1) に対応するコードを誤ると、無限ループの可能性
End If
End Function
Public Function MyFuncB(n As Integer) As Long
Rem 数式利用の場合、以下の1行のみで記述できます!
Rem MyFuncB = n * (n + 1) / 2
Dim i As Integer
Dim j As Integer
j = 0
For i = 1 To n Step 1
j = j + i
Next i
MyFuncB = j
End Function
イミディエイトウィンドウから動作確認で行う呼び出し方法が、(他ブックの関数を呼び出すため)ちょっとだけ難しくなっています。
? Application.Run("PERSONAL.XLSB!Module1.MyFuncA", 10)
? Application.Run("PERSONAL.XLSB!Module1.MyFuncB", 10)
Applicatuin.Run という特別な命令を用い、ダブルコーテーション囲みで「Excelファイル名!モジュール名.プロシージャ名」を指定後に、引数を順に記述します。
値を返さないプロシージャの場合、以下のようになります。(引数が文字列1つの場合)
CALL Application.Run("PERSONAL.XLSB!Module1.MySub1", "Parameter1")
![37](https://livedoor.blogimg.jp/gadgets_geek/imgs/3/b/3bf3d52f-s.png)
他ブックとなるため、ワークシートからの関数呼び出しも関数(プロシージャ)名の前に「Excelファイル名」を付けて修飾する必要があります。(区切りは、シングルコーテーション)
他ブック内の関数のため補完は効かないので、「E1」セルに間違いないように以下を入力します。
=PERSONAL.XLSB!MyFuncB(A1)
「E1」セルをコピーし、「E2:E10」セルに貼り付ける。
![29](https://livedoor.blogimg.jp/gadgets_geek/imgs/0/0/006966b2-s.png)
他ブック内の関数のため補完は効かないので、「F1」セルに間違いないように以下を入力します。
=PERSONAL.XLSB!MyFuncA(A1)
「F1」セルをコピーし、「F2:F10」セルに貼り付ける。
![13](https://livedoor.blogimg.jp/gadgets_geek/imgs/4/0/40a6207a-s.png)
=PERSONAL.XLSB!MyFuncA(A10) にて「F10」セルに 3,628,800 の結果が返ることを再確認。
![20](https://livedoor.blogimg.jp/gadgets_geek/imgs/c/c/cca28589-s.png)
[command] - [Q] にて Excel を終了すると、どのExcelファイルが変更されたか判別可能です。
[すべて保存] をクリックすると、次画面は表示されず すべてのExcelファイルを保存します。
(OneDrive を使用されていない方は、 "個人用マクロブック" への変更を保存しますか?と表示)
![30](https://livedoor.blogimg.jp/gadgets_geek/imgs/0/1/013064d1-s.png)
2. 標準の XLSTART フォルダ
Excel2016 for Mac 標準の「XLSTARTフォルダ」はこちら!Excel には「XLSTART」フォルダが用意されていて、そこに入っているすべてのExcelファイルは、Excelが起動された時に自動的に開くという仕様になっています。
Excel 環境設定にて「XLSTARTフォルダ」を指定しなければ、このフォルダが Excel2016 for Mac の「XLSTARTフォルダ」となります。
1. では この標準の「XLSTARTフォルダ」を使用せず、OneDrive 内の任意フォルダを「XLSTARTフォルダ」として指定しました!
3. 任意の XLSTART フォルダとして、OneDrive内を指定可能
1. のとおり OneDrive 内の任意フォルダを「XLSTARTフォルダ」として指定可能なため、Office 2016 for Mac をインストールした複数の Mac(Book) にて Excel ファイルを共用可能です。Office365のライセンス を保有していて OneDrive の設定も行えば、一時的に Office 2016 for Mac をインストールして使用することも可能ということです。
明日は、 アドイン を利用して、Excel 2016 for Mac でもユーザー定義関数の呼び出しが簡単になるか試してみる予定です。
お疲れ様でした!
[command] + [Q] にてExcel を終了時、「作業中のブック」を保存するか確認のダイアログ画面が表示されるため 「保存」しましょう。
現状、 VBE 内で日本語を記述すると(貼り付けのみ可能な場合あり)乱れたり、保存時にクラッシュすることが多いため、 VBAコード は「未変換の英数字のみ」で記述してください。(テキストエディタからの貼り付けは可能)
最後まで読んでいただき、ありがとうございます。
ぜひ、右側の「人気ブログランキング」投票に ご協力ください。
また、お越しくださいませ。
// アタル
「広告」
「広告」
コメント