ACCESS2003 標準モジュールCALLについて

このQ&Aのポイント
  • ACCESS2003で標準モジュールの呼び出しについて調査しています。
  • 標準モジュールの名前はTESTで、呼び出すサブルーチン名はAAです。
  • 具体的な命令の記述方法や必要な設定について、既出の文献を探しています。
回答を見る
  • ベストアンサー

ACCESS2003 標準モジュールCALLについて

お世話になります。 ACCESS2003で、標準モジュールの呼び出しについて次のような流れを 作りたいと思っていますす。 標準モジュール名:TEST public sub AA() dim txtB as string (*1 txtB = "TEST.subBB" (*2 call txtB end sub 実現させるには、*1の命令がobjectまたはmodule型で宣言し、 2)はset命令を利用すると思います。 どのように命令作成してよいか困っています。 実際に作成する場合、どのような設定、命令が必要でしょうか。 既出、文献でも教えていただけないでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

こちらが参考になるでしょう。 http://www.accessclub.jp/bbs3/0346/superbeg104200.html

yukinkots
質問者

お礼

ありがとうございます。 探していた方法が見つかりました。

その他の回答 (1)

  • noah7150
  • ベストアンサー率46% (116/251)
回答No.1

関数名を文字列で指定するのはまず無理 VBA言えど実行前には構文のチェックや変数のためのメモリー確保を行い実行されています 関数の基本動作からすると呼び出されるとき括弧内に書かれた引数をスタック領域に格納し 関数の先頭アドレスに実行権を移します しかし現状の構文なら関数の先頭アドレスは持っていません あくまで文字列です また、今回のサンプルは引数を持ちませんがVBAには分からないことです これがC等のポインターで実行されるプログラムならそれなりの書き方も出来ますが しかしVBAでは出来ないと考えたほうが良いと思われます。 確かにデータの内容にCALLしたい関数を変えたい、値が1ならSub1、2ならSub2、AならSubA などの様に しかし想定外の文字がセットされていた場合などCALLすべきアドレスがありません どうしても実行したいなら Select Case Dat1 Case "1": Call Sub1() Case "2": Call Sub2() Case "A": Call SubA() Case Else: Call SubZ() End Select と記述するしかないと思われます。

関連するQ&A

  • 標準モジュールにpublicで宣言するしかない?

    フォームモジュールと標準モジュールで同じ変数を使って値を行き来したい場合、 標準モジュールにpublicで宣言するしかないのでしょうか? 【フォームモジュール】 Private Sub cmd_コマンド0_Click() test = "aaa" Call 標準モジュールtest End Sub 【標準モジュール】 Public test As String Sub 標準モジュールtest() MsgBox test End Sub でいいのですか?

  • アクセスで標準モジュールの中身を書き出したい

    http://officetanaka.net/excel/vba/vbe/05.htm の Sub Sample9() Dim Code As String Code = ThisWorkbook.VBProject.VBComponents("Module1").CodeModule.Lines(7, 5) MsgBox Code End Sub のエクセルではなく アクセスバージョンはないでしょうか? http://d.hatena.ne.jp/taka_2/20090907/p2 をアクセスの標準モジュールに貼り付けてみたのですが inFileName = WScript.Arguments(0) で実行時エラー424になってしまいます。

  • 標準モジュールについてなのですが

    すみません。教えてください(/_;)VB6にて理解できないことがあります。いくつものパスを標準モジュールに記述できると知り、早速見やすいプログラムにしようと思い、標準モジュールを追加しました。サンプルなどを調べ、Function Apath() as stringを理解しました。フォームの方にはpath = Apathって書いておけばいいと書かれていたのでその通りにしました。しかし、見に行ってはくれません(>_<)で、いろいろやってみてあることに気づきました。変数を宣言してたら、ダメでしてなかったらちゃんと見に行ってくれます。 Dim path as string,Dim Apath as string.Apathを消すと働いてくれます。宣言が間違っているのでしょうか?標準モジュールをこのような感じで利用するには何か重大なルールがあるのでしょうか?すいません、初心者すぎる質問で<(_ _)>しかし、聞かぬは一生の恥と思い質問しました(>_<)よろしくお願いいたします<(_ _)>

  • フォームのイベントを標準モジュールから呼び出す

    フォームのイベントを標準モジュールから呼び出す事は出来ないのでしょうか? ちなみにアクセスです。 例えば、 Private Sub Form_Load() MsgBox "test" End Sub というのはフォームを開いたときにしか発生しないですよね。 でもフォームを開いている状態でForm_Loadと全く同じ事をしてほしい時は どうすればいいですか? 標準モジュールで Sub a() Call Form_フォーム1.Form_Load End Sub としてみましたが、メソッドまたはデータ メンバが見つかりません。 (Error 461)になりました。 MsgBox "test" だけなら、 Sub a() MsgBox "test" End Sub にすりゃいいじゃん!って思われがちですが、 実際はForm_Loadイベントにはたくさんのコードが書かれています。 標準モジュールからイベントの呼び出しを教えてください。

  • VBA 標準モジュールとフォーム

    ある標準モジュール内で生成した変数の値をフォームのコマンドボタンをクリックしたら表示されるプログラムはどうやってつくるのですか? 標準モジュール sub test() dim a as integer dim b as integer dim sum as string a=5 b=1 sum=a+b End sub フォームのコマンドボタンクリック Sub CommandButton1_Click() MsgBox sum End Sub 標準モジュールで計算した答えがフォームのコマンドボタンをクリックしたら答え6が表示されるようにしたいのですが、どうしたらできますか?

  • 標準モジュールからフォームをコントロールしたい

    こんにちは。 標準モジュールからフォームのリストボックスに文字を追加したいんですが、うまくいきません。 まず、button1をクリックすると、共通モジュールのサブルーチンを呼び出します。そして引数"0"を渡すと、Form1のListBox1に"hello"を追加したいのです。 実行させると、エラーはでないのですが、追加されるはずの"hello"がListBox1に追加されません。 たぶん     frm1.ListBox1.Items.Add("hello") あるいは    Dim frm1 As New Form1() あたりの宣言の仕方がまずいのだと思うんですが... どなたか、ご教授よろしくお願いします。 ■共通モジュール Module Module1 Dim frm1 As New Form1() Sub PC(ByVal PCrecieve As String) If PCrecieve = "0" Then frm1.ListBox1.Items.Add("hello") End If End Sub End Module ■フォーム Public Class Form1 Inherits System.Windows.Forms.Form Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Call PC("0") End Sub End Class

  • ComboBox1で何を選んだかの情報を標準モジュールで使いたい

    Visual Basic 6 にて簡単なプログラミング中です。 フォームfrmMainでコントロールComboBox1があり、インデックスを3つ持っております。 また、標準モジュールModule1ではある処理Aをさせております。 図示すると、 ----Module1 | --frmMain -- ComboBox1 -- インデックス(赤、青、黄) ComboBox1では3つのインデックスより、赤、青、黄を選びます。 問題点: どれを選んだかの情報をModule1の処理A(Subプロシージャ)の中で取得したいのですが、うまくいきません。 (x=ComboBox1.Textのように取得して、処理の中で(赤、青、黄)どれを選んだかの情報を使いたい) これまでにやったこと: 1.Module1内で宣言無し→エラー発生 2.Module1の処理AでDim ComboBox1 as Controlと宣言→エラー発生 自分自身の予想:どこかで宣言をすればうまくいくのかもしれない??それとも何か別の原因か??本を読むとグローバル変数とかいうのがあるがこれと関係するのだろうか?? よくわからない事(独り言です): ComboBox1からクリックして「コードの表示」を出すと、frmMainに属するコードが出てくるが、Module1で処理させている事をfrmMainに属するコードの中でやらせればよいのか??? VB素人レベルです。どうぞよろしくお願いします。

  • 標準モジュールとクラスモジュールについて

    標準モジュールでType型を使用しています。 この標準モジュールをクラスモジュールに置き換えて、Formから呼び出すCOMに作り変えたいのですが、引数ってどう設定したらよいのでしょうか? 今は標準モジュールなので、こんな感じで呼んでいるのですが・・・ 例) Private Sub Command1_Click() Dim in_b As IN_PARA Dim out_b As OUT_PARA in_b.Name = "山本太郎" in_b.Seikaku = "優しい" in_b.Syumi = "釣り" in_b.Tokugi = "野球"

  • Friend は標準モジュールじゃ宣言できない?

    Public Sub test1() End Sub とは出来るけど Friend Sub test2() End Sub はできないのでしょうか? Friend Sub test2を標準モジュールに書こうとすると -------------------------------- コンパイルエラー オブジェクト モジュールでのみ有効です。 使用したステートメントまたは構文要素 (たとえば、Implements ステートメント、WithEvents キーワード、イベント シンクなど) は、オブジェクト モジュール以外のコードでは使用できません。 エラーの原因となったステートメントを、オブジェクト モジュール内に記述します。 -------------------------------- となってしまいます。 「オブジェクト モジュール以外のコードでは使用できません。 」=標準モジュールでは使用できないと言う事でしょうか?

  • VB.netで標準モジュールからフォームを呼び出す

    お世話になります。 標準モジュールから以下のようにフォームを呼び出しているんですがうまく表示されません。 どこが悪いんですか? 標準モジュール内----------------------   Public Sub Main()     Dim frm1 As New Form1     frm1.Show()   End Sub