0

エクセル2010のVBAについて質問です。解決策をたくさん探しましたが、答えは私の問題に対処していません。stackoverflow コミュニティが私に光を当てることができることを願っています。

ワークシートのセルから呼び出されるユーザー作成関数があります。これは 2 つのパラメーターで呼び出されます。両方のセルが同じシートにあります。

この関数の目的は、2 つのパラメーターを確認し、その値に応じて関数の結果として文字列を返すことです。

これまでのところ、機能は期待どおりに機能します。

ただ、第一引数の値が一定の値を持っている場合、第二引数の値を変更できるようにしたいです。これは私が立ち往生するところです。その値を変更する方法が見つかりません。

パラメータを目的の値に設定しようとしましたが、エラーが発生します。アクティブなシート、つまりセルへのポインターを設定できると思いましたが、その参照が何であるかわかりません(シートに多くあるため)。

正直なところ、必要なことができるかどうかはわかりません。今後についてのご意見やご感想をお待ちしております。

よろしく

グラハム・ジョーンズ

4

2 に答える 2

1

ユーザー定義関数(UDF)はワークブック/ワークシートなどの状態を変更できないため、ワークシート変更イベントを使用できます。

関数を入力するワークシートにこのコードをコピーします。

    Private Sub Worksheet_Change(ByVal Target As Range) 
Application.EnableEvents=False
     if Target.Address = "$A$1" and target.count = 1 Then ' change in first parameter - first parameter
       if Target.Value ="something" then    Range("B1").Value ="change"
         '$A$1 is the location of fist paramenter
         'range("b1") is second parameter on assumption
      end if
   Application.EnableEvents=True
    End Sub 
于 2013-03-07T14:43:11.320 に答える
0

原則として、Excel 関数の入力が変更されることは望ましくありません。私は以前にそれをやったことがありますが、それは非常に悪い習慣だと考えられています。

より受け入れられる方法は、2 番目のパラメーターを計算する関数を作成することです。これには 2 つの入力が必要です。

  1. 最初のパラメーター
  2. 2 番目のパラメーターのデフォルト値

次に、その関数を使用してワークシートの 2 番目のパラメーターを計算します (つまり、2 番目のパラメーターを含むセルを設定値にするのではなく、この関数を介して計算されます)。元の関数は次のように機能します。 2 番目のパラメーターは常に期待値です。

これが理にかなっていることを願っています-そうでない場合は、私に知らせてください。例を提供します。

于 2013-03-07T14:42:24.620 に答える