• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelのマクロの結合方法を教えてください)

Excelマクロの繋げ方と参考書籍

このQ&Aのポイント
  • Excelのマクロの結合方法を教えてください。マクロを使って作業を効率化するための方法を学びたいです。
  • 現在、「マクロの記録」を使用してマクロを作成していますが、マクロが増えてしまい困っています。複数のマクロを一つにまとめる方法を教えてください。
  • マクロの編集画面には理解が及んでおらず、なかなか繋げることができません。具体的なマクロの編集方法や参考書籍を教えていただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.6

マクロの記録でマクロを作ったのであれば、以下の様になっていると思います。 Sub Macro1() ' ' Macro1 Macro ' ' End Sub Sub Macro2() ' ' Macro2 Macro ' ' End Sub Sub Macro3() ' ' Macro3 Macro ' ' End Sub 以下のマクロを追加します。(上でも下でもいい) Macro0を動かせば、全て動きます。 ' Sub Macro0()   Macro1   Macro2   Macro3 End Sub もし、必ず同時に動かして、別々に動かすことがないなら、End Sub とその下のSab を削除すれば1つになります。(最後は残しておきます) Sub Macro1() ' ' Macro1 Macro ' ' ' ' Macro2 Macro ' ' ' ' Macro3 Macro ' ' End Sub

lovelykajiyan
質問者

お礼

的確なご回答をいただきました。 所期の目的が十数年ぶりに、クリアできました。 ✡--------✡ End Sub とその下のSab を削除すれば1つになります。 (最後は残しておきます) ✡--------✡ ありがとうございます。

その他の回答 (6)

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.7

今晩は 回答No.5です。 名簿の図が添付されていませんでした。 改めて添付します。 一つのマクロは Sub マクロ名()  'で始まり End sub  'で終わります 即ち「Sub マクロ名()」と「End sub」の間に命令文を記述します 1行に1つの命令文が基本ですが :(コロン)で区切って複数の命令文を 1行に複数の命令文を記述することも出来ます。 この1行に他のマクロ名を記述すると 記述したマクロを実行しろという命令文です。  このことをマクロの結合と表現されているのでは? 回答No.5でそれを説明したつもりですが、ご理解できましたか コメント下さい。

lovelykajiyan
質問者

お礼

重ねてのご回答をいただきました。 ちょっと何か詰まっています。 更に、試行したいと思います。 ありがとうございます。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.5

今晩は、例題で説明します >Excelのマクロを使っての処理  マクロの記録」で始めて「記録の終了」でマクロを記録してボタンに登録して  ボタンが増えてしまうのです。(泣・・・)  ☆・・・・・☆  マクロの編集を開くと何にも分かりません。  (Sub Macro1)    End Sub  (Sub Macro2)    End Sub  (Sub Macro3)    End Sub  -----  添付のような名簿sheetから住所録と電話帳のマクロを作ってみましょう  ・B列を非表示で住所録  ・C列~D列を非表示で電話帳  ・A~D列を再表示で元の名簿 この処理を「マクロの記録」と「記録の終了」の間で一度実行すると マクロコードが作成されます。 '(シングルコーテイション)のある行はメモ用です。除去します > ☆・・・・・☆  このように、記録によって書かれた複数のマクロを繋げて、  一個のマクロに纏める書き方のポイントを教えてください。 -------------------------------------------------------- Option Explicit Sub 電話番号簿() Columns("C:D").Select Selection.EntireColumn.Hidden = True End Sub '--------------- Sub 住所録() ' Columns("B:B").Select Selection.EntireColumn.Hidden = True End Sub '----------------- Sub 名簿() Columns("A:E").Select Selection.EntireColumn.Hidden = False End Sub ------------------------------------------------ 住所録と電話帳を続けて実行すると名前だけが残ります 何れも名簿から始めなければなりません 名簿を実行してからするのに名簿を入れ子で処理します この場合名簿をサブルーチンと呼び名簿を命令文の行頭に記述して Option Explicit Sub 電話番号簿() 名簿 Columns("C:D").Select Selection.EntireColumn.Hidden = True End Sub '--------------- Sub 住所録() ' 名簿 Columns("B:B").Select Selection.EntireColumn.Hidden = True End Sub '----------------- Sub 名簿() Columns("A:E").Select Selection.EntireColumn.Hidden = False End Sub ------------------------------------------------ ら入門するような参考書名をご存じでしたら具体的に教えてください。>

lovelykajiyan
質問者

お礼

たいへん具体的なご回答をいただきました。 試行しています。 ありがとうございます。

回答No.4

Q、Excelのマクロの結合方法を教えてください。 A、Excelのマクロは結合しても無意味。 >一個のマクロに纏める書き方のポイントを教えてください。 そんなのは、存在しません。 >マクロを理解する最適な入門書。 なんでもOK。例えば、私が、最初にBASIC学習の手引きにしたのは次の2冊。 1、Fortran演習。 2、プログラミング言語C II。 この2冊に書かれている例題をすべてBASIC言語で記述して、その実行結果を確認。一日5時間×100日の悪戦苦闘。 市販の「Excel VBA 入門」なんてのは、何冊読んでも無意味で無駄。それは、その手の入門書は、次のように体系的に記述された書籍ではないからです。以下は、私が、ブログで紹介したJavaScriptの入門案内です。 目次 1 JavaScriptとは 2 JavaScript入門  2.1 変数と算術  2.2 for文  2.3 文字のカウント  2.4 配列  2.5 関数 3 JavaScriptの変数・演算子  3.1 変数名  3.2 エスケープシーケンス  3.3 宣言  3.4 算術演算子  3.5 関係演算子と論理演算子  3.6 代入演算子  3.7 三項演算子 4 JavaScriptのプログラムフロー制御  4.1 文とブロック  4.2 If-else  4.3 Else-if  4.4 Switch  4.5 ループ(while と for)  4.6 ループ(do-while)  4.7 Break文とContinue文 5 JavaScriptの関数 6 JavaScriptとHTMLのフォーム 7 JavaScriptとHTMLの組み込みイベント 8 結び  C言語を学んだ方は、容易に推察されるように、これは、「プログラミング言語C II」のJavaScript版です。質問者が、かのC言語の古典を紐解いて「VBA入門」を書き上げるといいです。3ヶ月もあれば、その作業が終わると思います。その時、質問者は、VBAプログラマの一員になっていることでしょう。市販の「Excel VBA 入門」を3冊も4冊も買い揃えても無意味。あんなのは2、3時間もあれば通読できるもの。それでは、何も会得出来ませんよ。たった一冊で良いから、それお指針にして上記の目次に沿って自前の「VBA入門」を書き上げることです。それが、一番の近道です。 と、爺は思う。

lovelykajiyan
質問者

お礼

>そんなのは、存在しません。 ありがとうございます。

回答No.3

書店で読みやすそうな書籍(Excel VBA 入門みたいなもの)を 購入し、学習されると良いと思います。 個人的に・・重要な用語としては ・オブジェクト(ブック、ワークシート、セル、コマンドボタン、他多数) ・イベント(クリック、開く、閉じる、アクティブ、他多数) でしょうか。 これが理解出来ないと辛いかもしれません。 他にも ・メソッド(命令) ・プロパティ(オブジェクトの設定) がありますが、オブジェクトやイベントを理解しないと 記述する場面が分からないと思います。 -- > このように記録されたマクロ(テンプレートでも可)の推敲(朱筆?)から入門するような参考書名をご存じでしたら具体的に教えてください。 残念ながら、これでは理解できないでしょう! 別に Excel VBA を学習して、後で記録したマクロを見て ・だからこうなっているんだ~ ・この記録したマクロ、変だぞ~、こう記述したほうが良いのに! 位になればしめたものです。 ※実際、マクロの記録は不要と思われる記述(命令等)が多く、  そのために汎用性がない、のが実情です。 では、頑張ってくださいね。^^  

lovelykajiyan
質問者

お礼

ありがとうございます。 がんばります。

  • unokwave
  • ベストアンサー率58% (966/1654)
回答No.2

マクロと言うのはソフトウェア プログラムの一種です。 プログラムという言葉自体、計画、予定、行動計画、スケジュール、日程、といった意味合いを持っていますね。 もし温泉に行く計画に、父兄参観に行くという予定をそのままくっつけたらどうなると思いますか。 その結合された内容は計画として成り立たないでしょう? ソフトウェアは、コンピュータ言語(多数の種類がある)で書かれた文章です。 そこには文法や記述の関わりがあり、目的に向かって手順を追った実行内容が書かれています。 また何かの機能(例えば音楽を鳴らす)を利用する場合には、その機能を利用する上での手続きが必要になります。 それは宿を利用する上での予約や飛行機を利用する上での搭乗手続きといった、対象毎に手続きが必要になるのと同様のことです。 そのようなルールを何一つ理解せず、ポイントだけでこなせるほどコンピュータの世界は浅くありません。 全く価値観や感覚が通じない、必要とされる体力やスキルが異なるジャングルや荒野に放り込まれて、ポイントだけで生きていけるとは思えないでしょう? あなたが使用しているパソコンのOSだけでも、そのソースコードを印刷すれば数十万ページにも数百万ページにもなる膨大な文章で、マクロはOSやアプリが持つ機能をより使いやすく単純化させていますが、元が膨大で抽象的に作られている(汎用的に使えるようにするためには抽象的に作る必要がある)ために、そこに書かれている事をある程度理解できるだけのマクロの文法や命令の学習が不可欠です。 購入された本には、恐らくそのような文法を理解する入り口となる内容が書かれているのではありませんか?。

lovelykajiyan
質問者

お礼

いろいろと、例を挙げて頂きました。 既成のソフトが高価な頃、N-BASICで表計算を書いていたことがあります。 Excelのマクロを開いてみると、何かにているように思います。 しかし、悲しいかな手を入れるとバグになってしまいます。 ベテランの方のアドバイスで、解決できるかと思いました。 ありがとうございます。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

> 記録によって書かれた複数のマクロを繋げて、一個のマクロに纏める書き方 マクロによってそれぞれですので一概に言えませんが、以下のようにして繋ぐことができるかもしれません。 マクロから別のマクロを呼び出すというやり方です。 Sub Macro1() 'Macro1の記録されたコード Macro2 'このように書く Macro3 'このように書く End Sub Sub Macro2() 'Macro2の記録されたコード End Sub Sub Macro3() 'Macro3の記録されたコード End Sub もしくは Sub Macro1() 'Macro1の記録されたコード Macro2 'このように書く End Sub Sub Macro2() 'Macro2の記録されたコード Macro3 'このように書く End Sub Sub Macro3() 'Macro3の記録されたコード End Sub ただ、マクロの基本は理解しないと繋げないこともあります。 また、マクロの記録でできないこともありますし。 以下のサイトを参照してください。 http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_050.html

lovelykajiyan
質問者

お礼

早速のご回答をいただきました。 ありがとうございます。 Sub Macro1() 'Macro1の記録されたコード Macro2 'このように書く Macro3 'このように書く End Sub Sub Macro2() 'Macro2の記録されたコード End Sub Sub Macro3() 'Macro3の記録されたコード End Sub ✡-----------✡ もしくは Sub Macro1() 'Macro1の記録されたコード Macro2 'このように書く End Sub Sub Macro2() 'Macro2の記録されたコード Macro3 'このように書く End Sub Sub Macro3() 'Macro3の記録されたコード End Sub ✡------------✡ 工夫してみたいと思います。

関連するQ&A