• ベストアンサー

Excelでセルに入力するとVBA関数が呼び出される

標記件、あるExcelファイルでセルに入力を行うと、入力後にVBAのある関数が自動で呼び出されるのですが、どこでこの設定を行う事ができるのでしょうか? VBAをOPENし、"ThisWorkbook"と"Sheet"内を開いても、何も記述はありません。通常はここで設定を行うと思うのですが・・・ (SelectionChangeなどで。) なお、呼び出される関数は、標準モジュール内に入っています。 以上、よろしくお願い致します。

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

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

別のセルの数式で、その関数を使っているのでは? 例えばB1に数式 =MyFunc(A1) と書いてあれば、A1が変更された時 MyFunc() が呼び出されます。

seicocco9640
質問者

補足

ご回答ありがとうございました。 おっしゃる通り、別のセルで使っておりました。 ありがとうございました。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 ご質問の内容は、 「入力後にVBAのある関数が自動で呼び出したいのですが、どこで、この設定をする事ができるのでしょうか?」ということでしょうか? 「あるExcelファイル」  と 「呼び出される関数は、標準モジュール内に入っています。」 とのブックが違うということですか? また「ある関数」というのは、なんですか?VBA関数は、そのままでは使えません。VBA関数というのは、ワークシート関数とは別のものです。 例えば、ISNUMBER はワークシート関数で、IsNumericは、VBA関数です。 それとも、ユーザー定義関数のことを指しているのですか? 何をしようとしているのか、とりあえず、コードを見せてください。 もう少し詳しい説明をお願いします。

seicocco9640
質問者

お礼

ご回答ありがとうございました。 説明不足で申し訳ありませんでした。 No1の回答で、解決しました。

関連するQ&A

  • Excel VBAでのコードの書き分け方

    Excel VBAについてご質問します。 プロジェクトの項目を見ると、 Sheet1 ThisWorkbook 標準モジュール などさまざまあると思います。 これらに対して、どこにコードを書いていくべきなのかがわかりません。 例えば、Sheet1にボタンを配置して、それがクリックされたときの動作についてはSheet1に書けばいいのだと思います。 ですが、いろんなシートのコード、フォームのコードなどから呼び出される関数はThisWorkbookか標準モジュールのどちらに書けばいいのか悩んでいます。 それ以外のケースも含めて、一般的にこういう風に使い分けをするというのがありましたら、ぜひ教えてください。 よろしくお願いいたします。

  • エクセルのユーザー定義関数で(VBA)

    エクセルのVBAで、セルに「=SheetName」と書き込めば、その関数を書き込んだセルが属するシート名をセルに代入さるようなユーザー定義関数を作りたいと考えています。 で、標準モジュールに Public Function SheetName(test) SheetName = ????? End Function と、書き込んでふと止まりました。 ユーザー定義関数を書き込んだシートの名前ってどうやって取得すればいいのでしょうか?VBでいうSenderみたいなのってあるんでしょうか? どなたか?詳しい方教えて頂けないでしょうか? 宜しくお願いいたします。

  • VBAユーザー関数を外部から制御

    ExcelのVBAで、標準モジュールにワークシートで使うユーザー関数を記述しています。 ユーザー関数は、使い勝手を組み込みのワークシート関数と同様にするため、 Application.Volatile (True) で自動再計算するようにしており、数百カ所以上のセルに使用しています。 しかし、他のVBAモジュールでユーザー関数の戻り値が変わるような操作をすると、その都度 数百か所以上が再計算されるため、非常に時間がかかります。 ユーザー関数のApplication.Volatile (False) にすると瞬間で終了する処理が、数分かかる場合も あります。 他のVBAモジュールから、一時的にユーザー関数の処理内容を変更するようなことは可能でしょうか。

  • 自作関数からのセル操作

    お世話になります。 ExcelVBAで以下のような自作の関数を作成し、実行するとA1に”hoge”が入力されます。 <自作関数> function hoge() thisworkbook.worksheets("sheet1").range("A1").value = "hoge" end function しかし、ワークシート上のセル”A2”に「=hoge()」と入力してEnterとするとエラーになってA1には何も入力されません。 VBAで作った関数をワークシート上で関数として使う場合、任意のセルのプロパティを変更することはできないのでしょうか? よろしくお願いします。

  • Excelでセルに関数などが表示されていますが、VBAなどを使用して見

    Excelでセルに関数などが表示されていますが、VBAなどを使用して見えなくする方法ってないのですか? いろいろ、関数を表示してありますが、全体のシートあるいは特定のセルのみ関数が非表示になり、そこを編集するのは不可にしたいのです。 ただし、他のマクロを使って、最初に関数を放り込んだり、セルを挿入したりといろいろするのでそれに対応できる記述方法があれば教えて下さい。ちなみに、シートの保護などを使って、セルの書式の保護タブのロックや表示しないだと、マクロ上にエラーが出てしまいうまくいきませんでした。 当方初心なので分かりやすく教えて頂くと助かります。よろしくお願いします。

  • エクセルVBAで標準モジュールを保護したい

    エクセルのVBAマクロを使用したエクセルフィルがあります。 ユーザーは標準モジュールに記述した関数を使ってシートのマクロを変更してカストマイズできます。 ユーザーが標準モジュールを変更すると使用できなくなりますので、この標準モジュールだけをユーザーが変更できない、または見えないようにする方法をご教示いただけませんか。 よろしくお願いします。

  • VBAの入力時に

    お世話になります。 エクセルでVBAのモジュールでセル名やシート名を入力しようと全角ひらがなにしようと思うのですが、半角英数しか表示してくれません。 VBAをとじて、一般のエクセルのモードに戻ると難なく入力できます。 以前はこんなことはなかったと思うのですが、何かの設定を触ってしまったのかもしれません。 VBA入力時に全角かなを入力するにはどうしたらいいのでしょうか?

  • Excel-VBA rangeプロパティの使い方について

    Excel-VBA rangeプロパティの使い方について VBA初心者です。いろいろ調べたのですが、分からないので教えてください。 ThisWorkbookのSheet1のA1セルに、aというファイルのaというシートの特定のセルの値をコピーしたいです。 コピーする値のセルは、ThisWorkbookで入力した値を基に変数で記述したいです。 例えば、ThisWorkbookのSheet1のC2セルに「D1」と記載していたとして、その値を変数として設定して、最終的にaというファイルのaというシートの「D1」セルをThisWorkbookのA1セルに貼り付けるのが目的です。 この場合の、下記のhensuu = の設定方法について、ご教授願います。 hensuu = ThisWorkbook.Sheets("Sheet1").Range(“A1”)= Workbooks(a).Sheets(a).Range(hensuu)

  • エクセルVBAで関数が入った空白セルの取得

    エクセルVBAで下記のようなセルの参照をしたいのですが、よろしくお願いします。(エクセル2002です)   A  B  C  D  E  F 1 78 80 セル(A1)(B1)には値も関数も入れられています。 セル(C1)(D1)(E1)には値は入っていませんが、ワークシート関数が組み込まれており空白となっています。(関数の""にて空白) セル(F1)には何も入力されていません。 今回はセル(B1)の80の値を取得できるようにVBAで下記のようにコードを組みました。 Range("F1").End(elToLeft).Activate そうすると、セル(E1)に関数があるために(?)(E1)がアクティブな状態となります。 関数が入力されていても空白として(B1)をアクティブな状態にするために良い方法はありますでしょうか? 誠に申し訳ございませんが、よろしくお願いします。

  • Excel VBAでの関数入力

    お世話になっております。 ExcelのVBAに関する質問です。 やりたいこととしては  (1) CSVファイルを開き、そのファイル名を取得後  (2)「カウントマクロ.xlms」、「件数表」シートのB2から最終行まで、(1)のCSV(Sheet1)を参照先とするCOUNTIF関数を入力する。というものです。   Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.csv?") Workbooks.Open OpenFileName Filename = Dir(OpenFileName) Workbooks("カウントマクロ.xlsm").Activate Worksheets("件数表").Activate LASTROW = Cells(Rows.Count, "A").End(xlUp).Row Range("B2").Select ActiveCell.FormulaR1C1 = _ "=COUNTIF(Filename.Sheet1!R2C10:R10C10,""*"" & RC[-1] & ""*"")" Range("B2").Select Selection.AutoFill Destination:=Range(Cells(2, "B"), Cells(LASTROW, "B")) End Sub 上記のように記述してみたのですが、 "=COUNTIF(Filename.Sheet1!R2C10:R10C10,""*"" & RC[-1] & ""*"")" の部分Filenameが件数表シートの関数にそのまま表示されており、うまく機能しませんでした。 このようにVBA上で関数を入力する場合、FileNameのように定義したファイル名はどのように記述すればよいのでしょうか。 どなたかご教示いただけましたら幸いです。

専門家に質問してみよう