- ベストアンサー
REPLACE関数が使えません
ACCESS2000を使っているのですが、REPLACE関数が使えなくて困っています。 Private Sub 置換_Click() MSG = Replace("ABC", "A", "B") MsgBox MSG End Sub こういう単純なもので試してもうまくいきません。 「プロシージャの呼び出し、または引数が不正です」 とのエラーが出てしまいます。 どんな原因が考えられますか?
- neo_gigantes
- お礼率92% (51/55)
- Visual Basic
- 回答数2
- ありがとう数2
- みんなの回答 (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のチェックを外すか、優先順位を落としてください。
その他の回答 (1)
- sgh
- ベストアンサー率61% (75/121)
私の環境では正常に動作します。 イミディエイトウインドウで実行しました。 ?Replace("ABC", "A", "B") BBC 参照設定で、参照不可になっているものはありませんか?
お礼
早速のアドバイスありがとうございます。 参照設定を見ましたが、ほとんどは参照付加になっています。全部にチェックして参照しましたが、これもエラーとなってしまいました。 ズバリ何を参照すれば良いと思われますか?
補足
参照しているのは、 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の場合、どうすればいいですか?
- ベストアンサー
- その他MS Office製品
- 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 を、呼び出してみたいです。 詳しい方、よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- 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 ----------------------------------------
- ベストアンサー
- JavaScript
- [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 よろしくお願い致します。
- 締切済み
- SE・インフラ・Webエンジニア
- 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) としても、コンパイルエラーとなってしまいます。 よろしくご教示をお願いいたします。
- ベストアンサー
- オフィス系ソフト
お礼
たびたびすみません。 最適化・修復をした後に試してみましたが、ダメでした。 それではということで新規DBを作成、必要なオブジェクトをインポートしてみましたが、全く同じエラーが返されてしまいました・・・・。 一体これはどういうことでしょう・・・。
補足
「アプリケーションの追加と削除」からOFFICEの修復を行ったら正常に動くようになりました! sghさんのアドバイスがなければ、延々と他の原因を探っていたと思います。ヒントをありがとうございました。