こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

回答受付中の質問

Excelのマクロの結合方法を教えてください

Excelのマクロを使っての処理を少しだけ使うようになりました。
「これがコンピュータなの!」と一瞬で作業が進みます。(当然ですね。)
☆・・・・・☆
マクロについて学びたいので、数冊の「基本技」などの参考書籍を購入しました。
でも、わかりません。
現在は、「マクロの記録」で始めて「記録の終了」でマクロを記録してボタンに登録して「マクロを利用」しています。
ボタンが増えてしまうのです。(泣・・・)
☆・・・・・☆
マクロの編集を開くと何にも分かりません。
(Sub Macro1)
  End Sub
(Sub Macro2)
  End Sub
(Sub Macro3)
  End Sub
 -----
と、作成した順にマクロが書かれていることが分かりました。
  我流でそれぞれを繋ぐと止まってしまいます。
 ☆・・・・・☆
このように、記録によって書かれた複数のマクロを繋げて、一個のマクロに纏める書き方のポイントを教えてください。
また、このように記録されたマクロ(テンプレートでも可)の推敲(朱筆?)から入門するような参考書名をご存じでしたら具体的に教えてください。
 

☆・・・・・☆

投稿日時 - 2019-02-11 08:58:10

QNo.9586712

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.7

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

投稿日時 - 2019-02-13 21:35:32

ANo.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

投稿日時 - 2019-02-13 07:17:52

ANo.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
------------------------------------------------
ら入門するような参考書名をご存じでしたら具体的に教えてください。>

投稿日時 - 2019-02-11 21:13:15

ANo.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入門」を書き上げることです。それが、一番の近道です。

と、爺は思う。

投稿日時 - 2019-02-11 12:57:50

ANo.3

書店で読みやすそうな書籍(Excel VBA 入門みたいなもの)を
購入し、学習されると良いと思います。


個人的に・・重要な用語としては
・オブジェクト(ブック、ワークシート、セル、コマンドボタン、他多数)
・イベント(クリック、開く、閉じる、アクティブ、他多数)
でしょうか。
これが理解出来ないと辛いかもしれません。

他にも
・メソッド(命令)
・プロパティ(オブジェクトの設定)
がありますが、オブジェクトやイベントを理解しないと
記述する場面が分からないと思います。


--


> このように記録されたマクロ(テンプレートでも可)の推敲(朱筆?)から入門するような参考書名をご存じでしたら具体的に教えてください。


残念ながら、これでは理解できないでしょう!

別に Excel VBA を学習して、後で記録したマクロを見て
・だからこうなっているんだ~
・この記録したマクロ、変だぞ~、こう記述したほうが良いのに!
位になればしめたものです。

※実際、マクロの記録は不要と思われる記述(命令等)が多く、
 そのために汎用性がない、のが実情です。



では、頑張ってくださいね。^^
 

投稿日時 - 2019-02-11 11:35:52

ANo.2

マクロと言うのはソフトウェア プログラムの一種です。
プログラムという言葉自体、計画、予定、行動計画、スケジュール、日程、といった意味合いを持っていますね。
もし温泉に行く計画に、父兄参観に行くという予定をそのままくっつけたらどうなると思いますか。
その結合された内容は計画として成り立たないでしょう?

ソフトウェアは、コンピュータ言語(多数の種類がある)で書かれた文章です。
そこには文法や記述の関わりがあり、目的に向かって手順を追った実行内容が書かれています。
また何かの機能(例えば音楽を鳴らす)を利用する場合には、その機能を利用する上での手続きが必要になります。
それは宿を利用する上での予約や飛行機を利用する上での搭乗手続きといった、対象毎に手続きが必要になるのと同様のことです。

そのようなルールを何一つ理解せず、ポイントだけでこなせるほどコンピュータの世界は浅くありません。
全く価値観や感覚が通じない、必要とされる体力やスキルが異なるジャングルや荒野に放り込まれて、ポイントだけで生きていけるとは思えないでしょう?
あなたが使用しているパソコンのOSだけでも、そのソースコードを印刷すれば数十万ページにも数百万ページにもなる膨大な文章で、マクロはOSやアプリが持つ機能をより使いやすく単純化させていますが、元が膨大で抽象的に作られている(汎用的に使えるようにするためには抽象的に作る必要がある)ために、そこに書かれている事をある程度理解できるだけのマクロの文法や命令の学習が不可欠です。

購入された本には、恐らくそのような文法を理解する入り口となる内容が書かれているのではありませんか?。

投稿日時 - 2019-02-11 11:34:40

ANo.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

投稿日時 - 2019-02-11 11:33:48

あなたにオススメの質問