• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelVBAでの関数の引数の指定方法)

ExcelVBAでの関数の引数の指定方法

このQ&Aのポイント
  • ExcelVBAでInStr関数を使っていますが、引数の指定方法について困っています。
  • InStr関数の書式はInStr(Start,String1,String2,Compare)ですが、最初の引数のStartは省略しても良いと本に書いてあります。
  • しかし、省略記号の「:=」を使って引数を指定するとコンパイルエラーが発生します。解決方法を教えてください。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

ドル位置(0)=instr(選択範囲,"$") で良いのでは? Sub aa()  s1 = "ABCDE$9000"  s2 = "$"  MsgBox s1 & "で" & s2 & "は" & InStr(s1, s2) & "文字目" End Sub

kamkamkam3
質問者

お礼

どうもありがとうございます。 すごい早く答えが返ってきてびっくりしました。 教えてもらったとおりにやったら、うまくできました。大変感謝しております。 本当にどうもありがとうございます。 こういう細かいことは、なかなか参考書に書いてないんです。ExcelVBAは、リファレンスみたいのはたくさんありますが、文法書がなかなかなくて、困っています。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • メッセージを表示する関数の引数について

    はじめましてよろしくお願いします。 現在、Access2002でメッセージを表示する関数を作成していますが、 引数を増やしたらどうしてもコンパイルが通らず困っています。 やっていることは標準モジュールに Public Sub ExcMsgBox(MSG As String, Title As String)   MsgBox MSG, vbOKOnly + vbExclamation, Title End Sub という関数をつくってフォームから ExcMsgBox ("入力必須項目が全て入力済でないため、" & _       vbCrLf & "編集内容を保存できません。","入力必須項目") という形で呼び出していますが、 これだと「コンパイルエラー、修正候補 =」と出ます。 SUBで関数宣言しているので、戻り値は無いはずなのですが TEST = ExcMsgBox ("入力必須項目が全て入力済でないため、" & _       vbCrLf & "編集内容を保存できません。","入力必須項目") とするとその場のコンパイルエラーは避けられるのですが、実際に実行すると やはり「コンパイルエラー Functionまたは変数が必要です」というエラーがでます。 関数を Public Sub ExcMsgBox(MSG As String)   MsgBox MSG, vbOKOnly + vbExclamation End Sub のように引数を一つ減らして、フォームから ExcMsgBox ("入力必須項目が全て入力済でないため、" & _       vbCrLf & "編集内容を保存できません。") のようにして呼ぶと正しくメッセージボックスが表示されるのですが。 基本的なことで何か勘違いしているかもしれませんが、何かお気づきの点が ありましたらご教授ください。よろしくお願いします。

  • ExcelVBAでのNZ関数について

    いつもお世話になっております。 早速ですが、ExcelVBAでNZ関数を使いたいのですが、 「実行時エラー'429' ActiveXコンポーネントはオブジェクトを作成できません。」 とエラーが出て、うまくいきません。 実現したい結果は、テキストボックスに入力された値に対して Nullチェックし、Nullの場合、変数に"名無し"と入力するとった 処理です。 ロジックは以下のように書きました。 Dim strName As String strName = Nz(txtName.text,"名無し") 環境は以下の通りです。 ・Windows Vista Home Premium ・Excel2007 よろしくお願いします。

  • 関数の引数にSTLを使う

    こんにちは。C++の勉強を最近始めました。 メンバ関数の引数に、STL(queue)を使おうとしています。 以下のように、参照にして使おうと思っています。 int test01::method(queue<int>& q) { return 0; } ですが、コンパイルしようとすると、 「識別子 'queue' がシンタックスエラーを起こしました。」 と言われてエラーになってしまいます・・・。 (他の箇所でqueueを使っていますが、そこではエラーは出ないので、 ヘッダファイルや名前空間はちゃんと指定できていると思います) STLに関する情報を集めてみたのですが、 引数にして使った例を見つけることができませんでした。 シンタックスエラーなので、文法や構文などが正しくないのだと思うのですが、 関数の引数にそもそもSTLを指定できないのか、 コーディングの仕方が間違っているのか、判断ができません。 どのようにしたら、引数に指定できるのでしょうか? ご存知の方がいらしたら、おしえていただきたいです。 よろしくおねがいします。

  • 「名前付き引数 string」とはどういう意味です

    Left 関数のヘルプを見ると、 ----------------------------------- 指定項目 :string 内容:必ず指定します。 この文字列式の左端から文字列が取り出されます。 名前付き引数 string に Null 値が含まれている場合は、Null 値を返します。 ----------------------------------- とヘルプに書かれてるのですが 「名前付き引数 string」とはどういう意味でしょうか? 「引数」と、「名前付き引数」は、別の物ですか? http://officetanaka.net/excel/vba/error/compilation_error/error_21.htm を見るところによると、 Replace 関数で例えるなら、 Cells.Replace What:="aaa", Replacement:="" の 「What:=」や「Replacement:=」の事を名前付き引数と言うで、あってますか? しかし、Left 関数には、「What:=」のような引数はないので、 名前付き引数は使われてないと思うのですが・・・ http://www.sanynet.ne.jp/~awa/excelvba/kouza/chapt_03/003.html を見たのですが、よくわかりませんでした。

  • 関数を引数とする方法?

    いつもお世話になっています。 MFCでプログラムをしています。 今、任意の関数(Func1)を 積分する関数(Func2)を作っています。 現在は、被積分関数の数だけ、 積分関数(Func2)を書いているのですが、 非効率的なので、なるべく汎用性を持たせたいと 考えています。 参考書(新C言語入門シニア編)の該当個所で、 クラスでない通常の関数を引数とする場合は、 うまくいったのですが、 クラスのメンバ関数を引数とした場合、 どうしてもコンパイルエラーが 発生してしまいます。 関数Func、I及びエラーメッセージは大凡次のとおりです。今のところ、引数とする関数(Func1)の引数は、 同一個数としています。 <被積分関数の例> double ClassA::Func1 (double a){ return a * 10; } <積分関数> double ClassA::Func2 (double (*f)(double), double a, double b){ return b * f(a); } void classA::Integration() { ... Func2(Func1,a,b); ... } <エラーメッセージ> classA::Integrationの呼び出し箇所で、 「1番目の引数を double(double)からdouble(__cdecl)(double)に 変換できません」 と出ます。 double(double)の部分は合っているようなのですが、 (__cdecl)の部分が違うということまでは 分かりました。 メンバ関数であることが原因のようなので、 Func2での引数宣言を double ClassA::Func2 (double (ClassA::*f)(double), double a, double b){ return b * f(a); } に変えてみたところ、 引数受け渡しのところはクリアするのですが、 Func2(Func1,a,b); の呼び出し時に、Func2が関数ではないという エラーがでます。 アドバイス又は参考URL等を 教えていただければ助かります。 よろしくお願いします。

  • 関数での引数入力に関するヘルプ・ガイダンスについて

    Excelでダイアログボックス「関数の挿入」を開くと、関数一覧が出てきて、選択した関数の簡単な【ガイダンス】とリンク<この関数のヘルプ>をクリックすると、ヘルプ画面が出てきます。 今、関数を作成し、同様に【ガイダンス】をダイアログボックスに表示させ、関数使用に関するヘルプ画面を出したいのですが、どのようにしたらよいか、教えてください。 なお、例題として、作成する関数は以下のとおりとします。 Function お買い上げ(apple As Long, orange As Long) As Long '引数:apple りんごの個数(単価100円) '引数:orange みかんの個数(単価 50円) お買い上げ = apple * 100 + orange * 50 End Function

  • C言語 関数プロトタイプ宣言の引数に配列を入れたいのですが

    関数プロトタイプ宣言(自作関数)の引数に、A[4][4]というような配列を入れたいのですが、コンパイル時にエラーでincompatibleといわれてしまいます。 A[0][0]からA[3][3]までを個別に引数に指定してもエラーになります。 良い方法は無いでしょうか?

  • ExcelVBA:新規ワークブックを作成し、ワークシートを3枚作る方法 

    ExcelVBAで質問があります。 設定で新規作成時ワークシート3枚としているなら問題ないのですが、それ以外の枚数に設定している場合で、新規のワークブックを作成し、ワークシートを3枚作成するコードを作りたいのですが、以下のようにするとエラーが出ます。エラーは「コンパイルエラー:名前付き引数が見つかりません。」です。 Workbooks.Add Count:=3 このエラーをなくし、新規作成でワークシート3枚(枚数は変わるかもしれません)作るにはどうしたらよいのでしょうか? 回答よろしくお願いします。

  • 引数なしの関数で疑問です

    とほほのjavascriptで勉強しています。 http://www.tohoho-web.com/js/function.htm#objFunction ここの function goukei() { var ans = 0; for (i = 0; i < goukei.arguments.length; i++) { ans += goukei.arguments[i]; } return(ans); } sum = goukei(1, 2, 3, 4, 5); goukei関数を定義したときの引数は、なしなのに goukei関数を呼び出すとき、goukei(1, 2, 3, 4, 5)と、このように5つも引数を指定しています。 Javaでは、こんな呼び出し方をすれば、コンパイルエラーになりますよね。 javascriptでは、引数なしで関数を宣言しても、呼び出すときに、好きな個数の引数を渡せるのですか? 「javascript 引数 省略」とか、「javascript 引数なし」とかいろいろググッてみたのですが 肝心の、javascriptでは引数なしにして宣言しても、呼び出すとき、好きな個数の引数つけて呼び出しても大丈夫。みたいな、確認したい記述はみつかりませんでした。 javascriptでは、このような書き方もできるということでしょうか。

  • サブルーチンに引数を2つ以上渡したい

    Access2002、vba上で サブルーチンに引数を2つ指定したいのですが、 なぜか「コンパイルエラー 修正候補=」 と出てしまいます。 引数を1つにするとうまく動作します。 どなたかお分かりの方いらっしゃいましたら教えて ください。 宜しくお願いします。 サンプルコード: -------------------------------- the_subroutine(a, b) ' ※ここでコンパイルエラー Sub the_subroutine(c As String, d As Object) End Sub -------------------------------