
No.2ベストアンサー
- 回答日時:
こんにちは。
Excel VBAマクロの基本的な使い方を間違って覚えたことが原因かもしれませんね。まず、そこを確認させてください。
「会計計算.xls!金利計算.金利計算」
ファイル名!モジュール名(またはシート名).プロシージャ(関数)名
という並びになっています。
モジュール名になる時は、同じプロシージ名のマクロやUDF(ユーザー定義関数)が、別々のモジュールにある時です。
さて、Excel VBAのマクロは、基本的にどこに書くかご存知じですか?
一般的に標準モジュールに書くことが決まりになっています。
あまり細々説明しても、たぶん、わけが分からなくなるでしょうから、他のオブジェクトの話はしません。
>「マクロ名」だけ、すなわち「金利計算」だけの名前
一般のプロシージャの場合は「金利計算」とだけ出るのは、自ブックだけです。
名実ともに、関数のようにどこでも「金利計算」という表示自体を出す、グローバル化は、アドインに変えることですが、それは、また別途質問してください。
WindFaller様 ご丁寧な回答ありがとうございます。
おっしゃるように付け焼刃の状態なので、異常が出ると全く対処できません。
今の画面の状況をご説明します。
・エクセルは2003
・会計計算を開発するにあたり、不定期でバージョンアップしており、現在は「会計計算5.5」です。
したがってPCには「会計計算1.0」から始まり、兄弟が10個ほど存在し、同名のマクロがそれぞれに存在します。
・今は「会計計算5.5」ファイルのみ立ち上がっており、他のマクロは立ち上がっていません。
・会計計算5.5にはマクロが40個ほど存在します。
・マクロは標準モジュールに記載しています。
・プロシージャ名とツール/「マクロ」ダイアグラムボックスには「金利計算」が表示されています。
・プロパティおよびマクロエクスプローラには「A金利計算」が表示されています。
・この状態で「金利計算」をシートに配した四角のオートシェイプに登録すると、「金利計算」が起動します。
・ここでプロパティの「A金利計算」を「金利計算」にすると、「マクロ」ダイアグラムボックスには
「会計計算.xls!金利計算.金利計算」が表示されてしまいます。
・この状態で四角のオートシェイプをたたくと、「金利計算」マクロが起動します。
・したがって実務上では困りませんが、何かがおかしいので、将来問題を起こすことを懸念しています。
これまでのバージョンでは、「会計計算」ファイルを単独で立ち上げている限り、プロシージャ名がどこにも表示されていました。
以上です。もしここがおかしいというのがありましたら、助言をお願いします。
No.5
- 回答日時:
こんにちは。
>残念ながら中身は理解できません。
私も全体は理解していません。ただ、あのコードを研究尽くした人たちがいるということは事実です。しかし、それでも、概形ぐらいしか分かりません。
別カテで、VBAの設計のような話が、ベテランと思われる方の発言がありました。多くの方は、つまり、全体の設計を描いていからだとおっしゃっています。でも、VBAとかいうものは、そういうものではないと思うのです。個人が一人で作るもので、担当の割り振りが決まっているわけではありません。
「いきなり部品図を描き、そのあとAssy図、全体図を描いている」
まったく他人からみたらそのとおりです。
実は、VBAマクロというのは、私の持論で、こうしたものは心臓部から作っていくという方法なのです。心臓が作れないものは、NGなので、どんなに立派な構想があろうとも、何の意味もありません。だから、最初に、心臓部から作り始めるのです。テクニック優先なのです。
例えば、シートで値を検索するのに、ふつうは、Findメソッドを使うと思うのです。そこがあやふやだったり、それを他に置き換えて、コードを構築するというのは、私などからするとありえないと思えるのです。定石と定石外しという言葉がありますが、VBAプログラムなんていうものは、ほとんど定石でやったほうが楽だし、それを独自路線、つまり定石外しなんて試みたところで、素人ではうまくいくわけがないと思います。
>フレーム構築から最後のコーディングに至る手順というものに関して、参考になりそうな書籍なりサイトをご存知でした
それは、「構造化プログラミング」だと思うのです。VBAにそれほど仰々しいものは存在しません。
今は時代が違うとは思っていても、VBAなどは、これを抜きにしては扱えませんね。
放送大学などでも、特別大きく取り上げなくなったもののようです。それでも、Basic 系には不可欠な考え方です。
http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/ …
例えば、ここのサイトは、旧VB6 なので、そのものずばりだという感じがします。(内容的には古臭いかもしれませんが、VBAの中で生きています。)
『構造化プログラミングについてまとめ』
•構造化プログラミングはプログラムを書く上での基本的作法である。
•現在の色々なグ技法や手法は全てこの作法の延長線上にある。
•大きなプログラムを書く上で構造化プログラミングは必須である。
•小さいプログラムを書く上でもこの作法は有効
•構造化プログラミングの精神を理解して,構造化プログラム言語を使う
こんな話は、仕事やコーディングには直結しませんが、かなり勉強にはなります。ある程度の長年やっている人は、一度はこんなものを目に通しています。
WindFaller 様 ありがとうございます
早速サイトを見てみました。
断片的にはHow To 本に散見できますが、
「良いプログラマは正しいプログラムを書くだけでなく,それが正しく動作することを,分かりやすく証明する必要がある」
「プログラミングの勉強は単にプログラムを書くためだけでは無く, 物事を深く理解するための一つの道である 」
などは私には含蓄のある言葉だと受け取りました。
プログラムを書いていて、実は自分はその本質を理解していなんだなと思うことがしばしばです。
少し頭を整理する手掛かりがつかめそうです。
大変お世話をおかけしました。
No.4
- 回答日時:
返事を読みました。
どうもありがとうございます。>基本からじっくりと勉強してみたいと思います。
教えてくれる物・人がいればよいのですが、情報が手に入れにくくなっているように感じます。
一通りの文法を終えた人にとって、その後のお手本や基礎的なことを指導してくれるものがないのも問題だと思います。
VBAのテクニックって、どうやって学ぶか、以前はさっぱり見当がつかなかったです。調べてみたら、なんのことはなく、技術自体もVB6のサイズダウンだと知りました。今は、VB6の資料が少ないので、なかなか溝が埋まりません。
>私にとっては高度な内容ですので消化しきれませんが
私の言っている話は、ちょっとしたツールなどの使いこなしから生まれたものです。全体を見れるようなツールがあれば、一目瞭然なのですが、それも、今は手に入りにくくなってしまったし(MZ-Toolsなど)、また、私が作ったユーティリティは、メインテが必要になってくるし、ある程度、VBAProject の仕組みを知っている人なら、たやすく作れるマクロです。
それで、もし一通りの技術をお持ちでしたら、お手本をおすすめします。
今、私たちが、見れる本物のVBAのお手本というと、郵便番号ウィザードのソースは勉強になると思います。
http://excelzipcode7japan.codeplex.com/SourceCon …
生のソースですから、制作過程まで想像できます。これを利用しない手はありません。作った会社は、郵便番号のアドバンス社です。これはお手本になります。私の言った「'」のコメントアウトの事も出てきます。変数の付け方とか。
WindFaller 様 ありがとうございます。
本物のVBAのお手本というのを見ましたが、確かに洗練されているなという雰囲気が分かります。
でも残念ながら中身は理解できません。
これまではいきなりコーディングに入り、そこで悪戦苦闘しておりました。
私はもともと機械設計が専門ですが、このマクロというのも機械設計と同じステップで進めるものかなという気がしてきました。
それに例えると、いきなり部品図を描き、そのあとAssy図、全体図を描いているような感じです。やっていることがまるで逆・・・。
全体構想が全くない状態です。
だから後から見直してみると、自分で書いたものなのにどこに何を書いたのか分からず、それを読み解くのに一苦労しています。
フレーム構築から最後のコーディングに至る手順というものに関して、参考になりそうな書籍なりサイトをご存知でしたら教えていただければありがたいです。
No.3
- 回答日時:
#2の回答者です。
事情は、よく理解しました。
今回は、別の場所にある同じマクロ名が原因です。
今の段階でトラブルをすぐに起こすかと言われたら、それはないでしょうと答えはしますが、管理としては、かなり良くない状態です。今の状況が直接問題を起こすのかとお聞きなったとしたら、それはありません。
(私もVBAを改編はしますが、その管理についても触れておきます。)
>「会計計算1.0」から始まり、兄弟が10個ほど存在し、同名のマクロがそれぞれに存在します。
よほどのことがない限りは、バージョンを上げたら、データは写しても、前のコードなどはお蔵入りさせてしまいます。
>・会計計算5.5にはマクロが40個ほど存在します。
生きているVBAマクロは残しても、使わなくなったものは、捨ててしまったほうがよいのです。VBAマクロには、一定の割り振りした物理的メモリというものがありますが、それは越えられません。
VBAで、一番いけないのは、ワークシートとのセルが紐付になった状態のものです。例えば、関数式がVBE上に置いているとかいうのは、VBA側の設定方法にも影響受けますが、場合によってはワークシート上の状態をVBE側が監視状態になっています。
(VBE-オプション-全般-順次コンパイルはOFF -> ONに直したほうがよいです。 )
メモリーリークはしていないとは思うのですが、一度タスクマネージャーのプロセスなどでExcelが10分とか20分で、何もしていない、または、マクロを一度使う度にメモリが増加していないか調べたほうがよいかもしれません。
いきなり捨てることが出来ない時は、使わないものは、「'」を先頭につけて、コメントアウト状態にしておきます。(私は、いつもそうしていますが、最近は、マクロのバックアップ-Exportをブック[プロジェクト]全体で取るようにしています。)
また、私の場合は、そのブック(プロジェクト)の全体のマクロ名の一覧をボタンが押すとみれるようになっています。
WindFaller 様
ご助言ありがとうございました。
私にとっては高度な内容ですので消化しきれませんが、これを機会に「ただコピペして動けばよし!」という態度を改めて、基本からじっくりと勉強してみたいと思います。
これまでテキストを読んだりしていますが、内容が分からず頓挫しておりました。でも見よう見まねでやっているうちに概念が少し頭に描けるようになりましたので、内容が理解できるのではないかと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 5 2023/06/02 08:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/08/04 13:56
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/01/25 11:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/07/13 12:31
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/15 16:33
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/03/31 12:46
このQ&Aを見た人はこんなQ&Aも見ています
-
EXCELのボタンによるマクロの登録名にファイル名が入ってしまう
PowerPoint(パワーポイント)
-
Excelマクロ ファイル名が変わるとエラーになる
Excel(エクセル)
-
エクセル マクロでマクロ名が変わってしまってエラーになります
Excel(エクセル)
-
-
4
【ExcelVBA】マクロの入ったシートをコピーしても新しいシート内でマクロを動作させるには?
Excel(エクセル)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
コピーしたファイルのマクロを実行すると前のファイルが開く
Access(アクセス)
-
7
VBA マクロ名のパスをとるには
Excel(エクセル)
-
8
マクロについて教えてください。 ファイル名を変更すると、デバックエラー
Word(ワード)
-
9
エクセル ボタンに設定したマクロごとボタンをコピー
Excel(エクセル)
-
10
マクロの保存先、開いてるすべてのブックの意味 エクセルを開き、表示→マクロ→マクロの表示と順番に開く
Excel(エクセル)
-
11
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
12
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
13
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
14
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
15
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
16
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
17
【Excel VBA】CSV取込時、数字の先頭の0を消えないようにするには?
Excel(エクセル)
-
18
エクセルのvbaにて thisworkbookに記載のマクロを他のブックにマクロにて自動コピー出来る
Excel(エクセル)
-
19
【Excel VBA】マクロをボタンに登録したがエラーで実行できない
Visual Basic(VBA)
-
20
B列の最終行までA列をオートフィル
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のマクロボタンをまとめて...
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
エクセル ボタンに設定したマク...
-
Excelのマクロでボタンを押すと...
-
Excelマクロで、稼働中のマクロ...
-
Excel:マクロを消す方法教えて...
-
別シートのマクロボタンをマク...
-
LDPlayerのマクロの編集方法を...
-
エクセル マクロ名にブック名...
-
エクセルマクロで、別のブック...
-
エクセルで、「いいね」のよう...
-
エクセルの、記録を終了したマ...
-
エクセルで明日の日付を表示す...
-
エクセルでマクロ(Excel 4.0)...
-
(Excel VBA)シートコピー時マ...
-
Ctrl+Zが使えない
-
Excelマクロをバックグラウンド...
-
Excelの別シートへの反映方法を...
-
スプレッドシートの文字の色判定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WPSOffice_マクロの有効化について
-
Excel マクロの編集がグレーに...
-
複数のマクロボタンをまとめて...
-
エクセル ボタンに設定したマク...
-
Excelのマクロでボタンを押すと...
-
エクセル マクロ名にブック名...
-
エクセルでマクロ(Excel 4.0)...
-
Excelマクロで、稼働中のマクロ...
-
エクセルで、「いいね」のよう...
-
エクセルマクロで、別のブック...
-
エクセルの、記録を終了したマ...
-
エクセルの表を複数枚印刷した...
-
別シートのマクロボタンをマク...
-
LDPlayerのマクロの編集方法を...
-
(Excel VBA)シートコピー時マ...
-
Ctrl+Zが使えない
-
Excelで、マクロが含まれ...
-
他のBOOKにマクロを反映させな...
-
Excel:マクロを消す方法教えて...
-
エクセルで明日の日付を表示す...
おすすめ情報