• ベストアンサー

REPLACE関数が使えません

ACCESS2000を使っているのですが、REPLACE関数が使えなくて困っています。 Private Sub 置換_Click()   MSG = Replace("ABC", "A", "B")   MsgBox MSG End Sub こういう単純なもので試してもうまくいきません。 「プロシージャの呼び出し、または引数が不正です」 とのエラーが出てしまいます。 どんな原因が考えられますか?

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

  • ベストアンサー
  • sgh
  • ベストアンサー率61% (75/121)
回答No.2

>Visual Bssic For Applications >Microsoft Access 9.0 Object Library >Microsoft DAO 3.6 Library >OLE Automaiton >Microsoft Visual Basic for Applications Extentdbility 5.3 の中では、Microsoft Visual Basic for Applications Extentdbility 5.3 にはチェックを入れていません。 何のために使うのかもわかりません。m(_ _)m とりあえず、バックアップを取った上で、最適化・修復を実行してみてはいかがでしょうか? また、それでもだめな場合、新規データベースを作成して全てのオブジェクトをインポートする手もあります。 ACCESS2000の場合標準でADOが参照されていますので、DAOを使っているのであれば、 Microsoft DAO 3.6 Libraryにチェックを入れ、ADOのチェックを外すか、優先順位を落としてください。

neo_gigantes
質問者

お礼

たびたびすみません。 最適化・修復をした後に試してみましたが、ダメでした。 それではということで新規DBを作成、必要なオブジェクトをインポートしてみましたが、全く同じエラーが返されてしまいました・・・・。 一体これはどういうことでしょう・・・。

neo_gigantes
質問者

補足

「アプリケーションの追加と削除」からOFFICEの修復を行ったら正常に動くようになりました! sghさんのアドバイスがなければ、延々と他の原因を探っていたと思います。ヒントをありがとうございました。

その他の回答 (1)

  • sgh
  • ベストアンサー率61% (75/121)
回答No.1

私の環境では正常に動作します。 イミディエイトウインドウで実行しました。 ?Replace("ABC", "A", "B") BBC 参照設定で、参照不可になっているものはありませんか?

neo_gigantes
質問者

お礼

早速のアドバイスありがとうございます。 参照設定を見ましたが、ほとんどは参照付加になっています。全部にチェックして参照しましたが、これもエラーとなってしまいました。 ズバリ何を参照すれば良いと思われますか?

neo_gigantes
質問者

補足

参照しているのは、 Visual Bssic For Applications Microsoft Access 9.0 Object Library Microsoft DAO 3.6 Library OLE Automaiton Microsoft Visual Basic for Applications Extentdbility 5.3 です。sghさんはこれ以外に何を参照されていますか? お手数ですが、教えれ頂ければ幸いです。

関連するQ&A

  • Replace関数について

    Sub macro1() Dim str As String str = "abc" str = Replace(str, "c", "a") MsgBox str End Sub このマクロを実行した時に、問題なく動くのですが なぜReplaceは関数なのに、 WorksheetFunction.がいらないのでしょうか? しかも Sub macro2() Dim str As String str = "abc" str = WorksheetFunction.Replace(str, "c", "a") MsgBox str End Sub にすると、エラーになります。 macro1のReplaceは、関数ではないのでしょうか? メソッドやステートメントですか?

  • Replaceメソッド 完全一致で置換したい

    VBAのReplaceメソッドを完全一致で使う方法はありますか? Excel.Range.Replaceメソッドの方ではなく、 VBA.Strings.Replaceメソッドの方なのですが、 Sub test12() MsgBox Replace("abc", "ab", "") '・・・(1) MsgBox Replace("ab", "ab", "") '・・・(2) End Sub (1)の場合は、置換対象と置換前文字が一致しないから、置換されたくなくて、 (2)の場合は、置換対象と置換前文字が一致する(完全一致)から、置換される・・・ とやりたいのですが、可能でしょうか? Excel.Range.Replaceメソッドなら、LookAt:=xlPartなどで、条件をつけられますが、 VBA.Strings.Replaceの場合、どうすればいいですか?

  • Replace関数ですか?Replaceメソッドで

    VBAの基本的な質問なのですが ************************************* Sub test() Cells.Replace What:="あああ", Replacement:="いいい" End Sub ************************************* の「Replace」は、 Replace関数ですか? Replaceメソッドですか? オブジェクトブラウザで確認すると ************************************* Excel.Range のメンバ VBA.Strings のメンバ Office.TextRange2 のメンバ Excel.WorksheetFunction のメンバ ************************************* のReplaceがあるのですが 例のReplaceはどれに該当するか教えてください。 ご回答よろしくお願いします。

  • Application.OnTimeで引数付き関数を呼び出したい

    Application.OnTimeで引数付き関数を呼び出したいのですが、可能でしょうか? 例を挙げると、   Sub Procedure1 (index as integer)       MsgBox index   End Sub を、呼び出してみたいです。 詳しい方、よろしくお願いいたします。

  • access vbaで、変数を含んだプロシージャ

    access vbaで、変数を含んだプロシージャを実行したい。 【やりたい事】 下記の矢印の部分で「msg1」「msg2」「msg3」を実行したい。 Public Sub test() For i = 1 To 3 msg & i ←ここを、どのように記述すればいいのでしょうか? Next End Sub Public Sub msg1() MsgBox "ok1" End Sub Public Sub msg2() MsgBox "ok2" End Sub PublicSub msg3() MsgBox "ok3" End Sub よろしくお願いします。

  • JavaScriptで、VBのAddHandler

    JavaScriptで、VBのAddHandlerのようなことを行う方法はないでしょうか? やりたいこととしましては、 一つの関数が呼ばれた際に、別の関数が呼ばれるように定義しておきたいと思っております。 簡単に、VBの例をあげるとすると下記のようなことです。 これをJavaScriptでやる方法を探しています。(jQueryでも構いません) ご存じでしたら、ご回答をお願い致します。 -------------------------------------- private sub Msg1()    MsgBox("1") End sub private sub Msg2()    MsgBox("2") End sub 'メッセージ1が呼ばれる際に、Msg2を呼ぶように定義 AddHandler Msg1, Addressof Msg2 ----------------------------------------

  • [Access2000] Replace関数がない?

    レコードの特定文字列を置換しようと思い、いろいろ調べたところ、Access2000から「Replace」関数というのが使えるようになったとのこと。 早速クエリーで使用したところ、「式の中に未定義関数 Replace があります」というエラー表示が…。式ビルダの組み込み関数を確認しましたが、Replaceという関数はやはり存在しないようです。 何か間違っているのでしょうか?お力添えいただければ幸いです。

  • Excel VBA onTime関数のプロシージャ引数に、引数(変数)つきのプロシージャを呼び出す方法を教えてください。

    現在ExcelVBAで一定時間ごとにメッセージを出すツールを作成しています。 その際にonTime関数を使っていますが、その引数のひとつである呼び出すプロシージャに「引数(変数)つきのプロシージャ」を設定しようとしています。 サイトを探してみたところ、引数にシングルクオーテーションで囲むなど書いてあったのですが、変数を引数としたプロシージャを設定すると、「プロシージャが見つかりません」のエラーがでます。 どなたかお力を貸してくれませんでしょうか。 ちなみに僕のコードは以下の通りです。(簡略化) ------フォーム Private Sub cmbOk_Click() Call メッセージ実行(txtTime.Text, txtContent.Text) End Sub ------ThisWorkbook Private Sub メッセージ実行(ByVal time As String, ByVal content As String) Dim starttime As Double MsgBox time & "毎に" & vbCr & content & vbCr & "を表示します。", vbInformation Unload frmSet starttime = Now + CDbl(TimeValue(time)) Application.OnTime starttime, "'expressContent" & time & content & "'" End Sub ------標準モジュール Dim starttime2 As Double Sub expressContent(ByVal time2 As String, ByVal content2 As String) MsgBox "content2", vbInformation starttime2 = Now + CDbl(TimeValue(time2)) Application.OnTime starttime2, "'expressContent" & time & content & "'" End Sub よろしくお願い致します。

  • AccessでReplace関数を使うときに…

    Access2003を使っています。 1つのフィールドに入っている文字列が何種類かあります。 ここでは10種類あるとします。 それぞれ、 在庫あり/在庫わずか/お取り寄せ/商品なし/販売終了/品切れ中4月21日入荷/品切れ中5月14日入荷/品切れ中6月1日入荷/品切れ中7月31日入荷/品切れ中8月31日入荷/ これを、在庫あり/在庫わずか/お取り寄せ は「0」に、それ以外は「1」にしたいのです。 いろいろ調べた結果、Replace関数というものを知り、使ってみたのですが、 Replace(Replace(Replace(Replace(Replace(Replace([在庫],"在庫あり","0"),"在庫わずか","0"),"お取り寄せ","0"),"商品なし","1"),"販売終了","1"),"品切れ中*","1") としても、最後の「"品切れ中*"」がうまく働きませんでした。どうやら「*」は使えないようです。 ただ、10種類ならまだ10回カッコを書いていくだけでいいですが、品切れ中の日付が100日分などとなるとそうも行きません。ですので何かいい方法をお持ちの方、おしえていただけませんでしょうか?よろしくお願いいたします。 (特にReplace関数にこだわっているわけではありません。ただ、あまりAccessには詳しくないので、クエリのデザインビューで紐付ける程度のことしかやっておりません。お手数をお掛けしますがよろしくお願いいたします。)

  • EXCEL VBAのユーザーフォームに引数を渡す方法について

    すいません、EXCEL VBAのユーザーフォームに引数を渡す方法についてご質問があります。 シート上にコマンドボタンを2つ用意する。 コマンドボタン1を押すと変数mは1 コマンドボタン2を押すと変数mは2 としてユーザーフォームを呼び出す。 Public m As Integer Private Sub CommandButton1_Click()  m = 1  Call フォーム呼び出し(m) End Sub Private Sub CommandButton2_Click()  m = 2  Call フォーム呼び出し(m) End Sub Sub フォーム呼び出し(m As Integer)  UserForm1.Show End Sub 次にユーザフォームにコマンドボタンを1個置き、 ボタンを押したとき、mが1であれば「ボタン1」 mが2であれば「ボタン2」 とメッセージボックスを出し、ユーザーフォームを閉じる。 Private Sub CommandButton1_Click()   If m = 1 Then    MsgBox "ボタン2"   ElseIf m = 2 Then    MsgBox "ボタン2"   End If  Unload UserForm1 End Sub プロシージャ間の引数渡しは色々なテキストに載っているのですが ユーザーフォームに引数を渡す方法はどうも見つからず、 Private Sub CommandButton1_Click(m) としても、コンパイルエラーとなってしまいます。 よろしくご教示をお願いいたします。