電子書籍の厳選無料作品が豊富!

初心者レベルです。
時々マクロを使って仕事などに役立てているのですが、マクロでプログラムを作るとき、まず自分がやりたいことをエクセル上で実際にやりますよね!そしてそれがマクロのプログラムとして自動で記録されますよね!大変便利な機能だと思っています。
が、しかし!この自動記録機能ですが…プログラムの途中から自動記録を継続させることができるのでしょうか。数年前は確か「自動記録の開始位置」が指定でき、前述のようなことができていたはずなのですが、会社で使っているパソコンが新しくなってからは(エクセルのバージョンが変わった?)できなくなりました。
私がやり方を知らないだけかもしれません。もしやり方をご存知の方がおられましたらご教示ください。
よろしくお願いします。

A 回答 (4件)

#2で解答を入れたものです。

質問の目的を誤解していて
済みませんでした。過去に下記で同様質問があります。
http://isweb12.infoseek.co.jp/computer/excelyou/ …
「マクロ「記録」の開始位置の指定」が質問なんですね。
「実行」と勘違いしました。
Exel5.0(?)時代、カーソルを既存マクロの
終わりにおいておいて、記録を実行しようとすると、
続けますかとか聞いてきて、Yesで続けられたような記憶があります。
97以降できないようですね。
続けて記録したマクロの名前をMacro2として、Macro1の
End Subの前に1行「Macro2」と打ちこめば凌げるのでは。
    • good
    • 0
この回答へのお礼

何度もすみません。そうですか、やはりできなくなっているのですか。
最後に提案いただいた方法…使えるかもしれませんね!やってみます。
ありがとうございました。

お礼日時:2002/08/04 15:12

こんにちは。



自動記録の開始位置を指定する方法は今も昔も知りません。
Excel95くらいから使ってますが、Excel95でも出来なかったような。。(知らなかっただけかも)

連続実行したいMacro1とMacro2があったとしたら、

Sub これを実行()
 Macro1
 Macro2
End Sub

のようなプロシージャを手書きして対応する事も出来ます。
増えたら、この下にマクロ名を書けばOK。

あと、「Macro1」と「Macro2」と「これを実行」が同じモジュールに記載されているのなら、Macro1、2のSubの前にPrivate を加えておくと、マクロ実行の時にマクロ名が出てこないように出来ます。

Sub これを実行()←このSubプロシージャは手書き
 Macro1
 Macro2
End Sub

Private Sub Macro1()← 自動記録、前にPrivateを追加
  ・
  ・
End Sub

Private Sub Macro2()← 自動記録、前にPrivateを追加
  ・
  ・
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。参考にさせていただきます。

お礼日時:2002/08/04 15:13

ご質問の真意をとらえた、解答になっているか自信がありませんが、何かの参考になればと思います。

「途中で止める」、「途中から始める」などありますが、「途中から始める」を念頭に置いています。
Sub macro1()
MsgBox "AAA"
End Sub
Sub macro2()
MsgBox "BBB"
End Sub
Sub macro3()
x = InputBox("何処を実行 1=AB,2=B")
Select Case x
Case 1
macro1
macro2
End
Case 2
macro2
End
End Select
End Sub
●例えとして2分割の例で話をします。まず一連のエクセルの操作をよく分析し、A部分とB部分に分けられたとします。
「分けられる」とは、
(1)まず分ける意味があること。使用者により多少事情
   が異なるでしょう。使い勝手が悪いと分ける意味が無い。
(2)A部分の設定や結果をBで使っていない(相互独立)こ   と。
 しかし「分けたい」「途中から実行したい」と思っておられ る以上、(1)(2)の成算は大丈夫おありでしょう。
●一度A部分の操作をマクロ記録し、終了する。名前はMacro1と名付けられたとする。次にB部分の操作のマクロ記録を行い、終了する。名前はMacro2と名付けられたとする。
●その後上記Macro3のようなプログラムを作る。
そしてMacro3を実行する。そしてInputBoxに対する応答で
どの部分を実行するか、コントロールする。
●ツール-マクロ-マクロの実行の画面で、中間エントリーポイントを指定を許していないようですし、一般にいろいろな
言語でも任意点や決まったところ数点から実行をするのは、
仕様として取り上げていないようです。モジュールを分割する
なんて原始的な方法しかないのではと思います。私は興味をもっています。
●デバッグ関連も使えないかとチェックしましたが使えそうにない。
●上記ではマクロの記録し直しを言いましたが、そうしなくてもEnd SubとSub MacroXX()を続けて「常識的な区切り点」で入れれば、分割出来そうに思います。

この回答への補足

早速のご回答ありがとうございます。
ご回答いただいた内容は理解できましたが、残念ながら私の説明が悪かったのか、私の悩みとは少し違っているように思いました。
私は「分けたい」のではなく、逆に「分けたくない」のです。
つまり上記で言うと、「A部分」の記録に続けて「B部分」の記録をしたいということなのです。普通にやると「A部分」、「B部分」はそれぞれ”macro1”、”macro2”という別の名前で記録されますよね。いつもはこれをあとでカット&ペーストしてまとめているのです。これを何とかしたいということなのです。
ご理解頂けたでしょうか。説明不足ですみません。

補足日時:2002/08/04 11:24
    • good
    • 0

おっしゃることわかります。

私は、そういう場合、途中から追加したいところから記録をはじめていったん別のマクロにし、その後でソース(VBA)上で貼りこんでいます。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
そうなんです。私もその方法を使っています。
カット&ペーストの手間はありますが、その方法を使えば一応できますよね…
でも確か以前のエクセルではできたという記憶があるので、今できないのが悔しくて…
やはりできなくなってしまったのでしょうかね…

お礼日時:2002/08/04 11:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!