• ベストアンサー

VBAのコードを書くところ(初心者)

michachaの回答

  • michacha
  • ベストアンサー率37% (9/24)
回答No.1

どこでもいいと思います. ただ,標準モジュールは同じ操作をする場合に 何度も同じことを書くのがめんどくさいのであるものと私は思っています. 引数だけちゃんと渡す事ができれば 標準モジュールがあればものすごく楽にプログラムできますよ!

arex_santa
質問者

補足

早速のお返事ありがとうございます。 理解できたのですが、ということはフォームに書いてあるコードはPrivate sub ()で書いてありますよね?それは他のところ(たとえば標準モジュール)からは参照(呼び出せない)できないのでしょうか?

関連するQ&A

  • 【vba】フォームに書いてあるコードをステップインすることは不可能でしょうか?

    エクセルもアクセスも同じなんですが フォームのモジュール?に書いてあるコードを 「F8」のステップインすることは不可能でしょうか? 標準モジュールなら 「F8」で少しずつVBAコードを試すことが可能なのですが、 フォームに書いてあるほうはできません。 ひとつひとつ試したいので Private Sub コマンド1_Click() Call test End Sub とフォームのところに書き、 標準モジュールには Sub test() ・・・ End Sub と書いて 標準モジュールのほうを F8で少しずつデバッグしています。 こうするしかないのでしょうか? よろしくお願いします。

  • VBAについての全般的な初心者の質問です

    VBAについての疑問です、宜しくお願いします。 VBAのフォームをユーザフォームから作成しました。 ボタン、テキストボックス、コンボボックス等を貼り付けて、コードを見てみると、 ボタン、テキストボックス、コンボボックスのイベントが発生したときのみのコードしか見えません。 複数のフォーム(仮にA、B、Cとします)を作成すると各フォームの名前がオブジェクト名となって いました。 疑問点1:全体を合わせたものが、標準モジュールというものになるのでしょうか。       最初のオブジェクト作成時には、標準モジュールとユーザーモジュールのどちらを選択す       るのでしょうか。また、両者は何がどう違って、どのように使い分けるのでしょうか。       また、オブジェクト、モジュール、プロシジャとの関係はどうなのでしょうか。 疑問点2:各オブジェクト間で共通で定義されるグローバル変数、配列みたいなものは、一体、どこ       で宣言してやるのでしょうか。       単にボタンとかテキストボックスのイベント発生文前に書いてやるだけでよいのでしょう       か。       各オブジェクト間で共通で呼び出したいサブルーチン、メソッドは何処に書いてやれば       よいのでしょうか。(そのような呼び出し方が許されているという前提での質問です。) 疑問点3:フォーム自身を作成した(宣言した)文(コード)、フォームに貼り付けた、ボタン、テキスト       ボックス、コンボボックスのAdd文(コード)、また、例えば、これらを着色した文(コード)等       を見ることは出来ないのでしょうか。       フォーム自身をInitializeする必要のある場合とは、どのような場合でしょうか。       この場合は、フォーム(オブジェクト)の名前に関係なく、「Private Sub UserForm_Initialize()」でなくてはならないのでしょうか。 フォーム自身のスクロールバー等の設定は一体何処に書いてやればいいのでしょうか。 プロパティからの設定しか許されてないのでしょうか。 疑問点4:Micro Script Editorにはそれが書かれているようですが、何故かHTMLで書かれていま       す。       何故VBAで書かれていないのでしょうか。       コントロールは表示されますが、フォームを呼び出すツールとか、メニューが何処にも       見当たりません。 以上長文ですが、宜しくお願い致します。

  • VBAのプロパティウィンドウについて

    VBAでプロパティウィンドウには ・Microsoft Excel Object ・フォーム ・標準モジュール があります。 ところで、下のプログラムですが、(1)の部分を標準モジュールに書き込み、フォームにあるコマンドボタンをクリックしたら、"test.xls"が表示されます。 しかし、(1)の部分をMicrosoft Excel Object のsheet1(sheet1)のコードに書き込み、プログラムを実行させると、フォームのコマンドボタンをクリックしても"test.xls"は表示されません。 これはなぜですか? (1)の部分のコマンドボタン1はsheet1に存在します。 (1)----------------------------------- Private file_name as string Private Sub CommandButton1_Click()   file_name="test.xls" UserForm1.Show End Sub (1)----------------------------------- フォーム Sub CommandButton1_Click() MsgBox file_name End Sub

  • VBAでマルチページの表示

    エクセル2002使用です。 ユーザーフォーム(オブジェクト名:UserForm1)に、マルチページ(オブジェクト名:page1)を配置してフォームを作成しました。 Sheet1にコマンドボタンを貼り付け、コマンドボタンをクリックして、標準モジュールを呼び出し、マルチページを標準モジュールから呼び出せるようにしたいのですがうまくいきません。 ’Sheet1 Private Sub CommandButton1_Click() Call フォーム表示 End Sub ’標準モジュール Sub フォーム表示() UserForm1.Show ’?ここのコードをいろいろ試したのですがわかりません。 End Sub この他 UserForm1.ShowPages "page1" とか 変数を入れてみたりしたのですが、うまくいきません。 すいませんが、よろしくお願いします。

  • 同じマクロ名でも、違うモジュールならエラーにならな

    同じマクロ名でも、違うモジュールならエラーにならない? エクセルVBAについてご教授ください。 標準モジュールに ――――――――― Option Explicit Sub CommandButton1_Click() MsgBox "" End Sub Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― と同じマクロ名を2つ作ったら、コンパイルエラーになりますが、 上記のコードは一度消して、フォームモジュールに ――――――――― Private Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― を一つ作り、 標準モジュールに ――――――――― Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― を一つ作った場合は、エラーにならずにマクロを実行できました。 これは、フォームモジュールがPrivate Subだからでしょうか? フォームモジュールに1つ、 標準モジュールに1つ なら同じマクロ名を使っても、エラーにならないという事でしょうか? よろしくお願いします。

  • excel vba です

    シートにActiveXコントロールでボタンを作りました そのボタン押下時、 標準モージュールにあるソースを直接呼出したいのですが、 ボタンとそのモジュールの割り当て方がわかりません 教えてください (1) sheet1 に CommandButton1 というボタンがあります (2) 標準モージュールにある、 Sub test() というモジュールを直接呼び出したい 普通にやると、Sheet1 に Private Sub CommandButton1_Click() というモジュールができてしまいます そこから、Sub test() をcall するのではなく、直接呼び出したいのです 教えてください、宜しくお願いします

  • エクセルVBAのユーザーフォームのコンボボックス

    エクセルVBAのユーザーフォームのコンボボックスの入力と ファイルの保存で質問です。 エクセルVBAで ユーザーフォームのコンボボックスを使用して 1月から12月までを選択してもらい、 選択した月を コマンドボタン押した際に、 セルにその値を入力するような マクロを作成しようとしています。 またコンボボックスは標準で6月が表示されるようにしたいと思います。 ユーザーフォームのコードの一部です。 Private Sub UserForm_Initialize() Dim m As Integer For m = 1 To 12 UserForm1.ComboBox1.AddItem m Next ComboBox1.ListIndex = 6 Private Sub CommandButton1_Click() 'ユーザーフォームを閉じる Unload UserForm1 mold  '↑フォームを閉じた後に実行される標準モジュールのマクロ名です End Sub 標準モジュールのコード 名称 「mold」 Sub mold() ActiveWorkbook.SaveAs _ Filename:="C:\_" & UserForm1.ComboBox1.Text & "月", _ FileFormat:=xlOpenXMLWorkbook ActiveWorkbook.Close ThisWorkbook.Activate ' End Sub の様に作成して実行してみたのですが、 コンボボックスで11月を選択しても 6月のままのファイルになってしまいます。 どのようにしたら、 コンボボックスで選択した値を ファイル名として保存できるでしょうか? 全部のコードを記載しますと 長くなってしまうと思い、 関連するコードを記載して質問しました。 分かりづらい所もあるかと思いますが よろしくお願いします。

  • VBとVBAのコードの違い プロシージャー呼び出し方法

    何度かお世話になっておりおります 毎回アドバイスありがとうございます 早速なのですがまた躓いてしまいアドバイスお願いします。 ~質問内容~ 標準モジュールからフォームのプロシージャーを呼び出す エラー内容 オブジェクトが必要である       オブジェクト修飾が必要など 出てきました オブジェクト修飾 というのが もう理解出来ず 本当にスタートの時点ではありますが アドバイスお願いします VBのコード 標準モジュール Sub Main() MainForm.Initialize End Sub フォームのコード Public Sub initialize()  ”コード内容”  End Sub ↑上記で記入しました フォームで宣言されているInitialize を呼び出したいのですが VBでは このままで出来るはずなのですが VBAでは オブジェクト修飾が必要です CALL をつけても エラーのままでした 少し質問がわかりにくくなってしまいましたが 標準モジュールから フォームのプロシージャーを呼び出すには なんと入れれば宜しいでしょうか? アドバイスお願いします

  • subプロシージャーは標準モジュールではなくフォームのコードを書く部分

    subプロシージャーは標準モジュールではなくフォームのコードを書く部分に書いても問題ないのでしょうか? エクセルにVBAでフォームを挿入し、 「Private Sub UserForm_Initialize()」 などのフォームのモジュールに、 Sub test() MsgBox "あああ" End Sub という標準モジュールに書くべきのsubプロシージャーを書いてもなにもエラーにならないし正常に動きます。 subプロシージャーは標準モジュールではなくフォームのコードを書く部分に書いても問題ないのでしょうか? それともエラーにならなくても標準モジュールに書いた方がいいですか?

  • エクセルVBAのユーザーフォーム

    おはようございます! エクセルVBAにてユーザーフォームを作りました。(通常フォーム以外からの入力をしないように保護してあるので)ファイルを開いたときにまずフォームを立ち上げるのですが、フォームからの値が反映するように下記の通りパスワード解除のボタンを作りました。 Private Sub CommandButton5_Click() Worksheets("○○◎").Unprotect Password:="××" End Sub こんなファイルをweb上で公開して他の人に数値を入力させようと思っている次第なのですが・・・。 PCで作っているときはうまく動作するのですが、webにのせたものだと上記のボタンを押すとエラーになります。 実行時エラー'1004' 'Worksheets'メソッドは失敗しました:'_Global'オブジェクト とでているのですが、これはどういう意味でしょう??? 初心者なもので全く分からず作っています。 どなたか教えて下さい!!! よろしくお願い致します。