- ベストアンサー
Excel2003 ユーザー定義関数
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
お話のとおり、 ユーザ定義関数の計算式に含まれるセルが変化する、 または、計算式が埋めなおされないと 再計算がされません。 掲示された関数では、 アクティブセルが書き換わらないと (言い換えれば、ユーザ定義関数を埋めなおさないと) 再計算されません。 計算式の埋まったセルを 複数範囲のセルに複写しても アクティブセルが書き換わったことにはならないです。 提示された計算式を見る限り ユーザ定義関数を使わずとも =ROW()*3 という計算式で期待のことができます。 ユーザ定義関数で実現したいということであれば Function 日別勤怠(MyRange As Range) As Long Dim i As Long i = MyRange.Row 日別勤怠 = i * 3 End Function といった関数にし、 例えば、B2セルに =日別勤怠(A2) といった計算式を埋めます。
その他の回答 (2)
- HohoPapa
- ベストアンサー率65% (455/693)
>回答No.1の方は「オブジェクト変数またはwithブロック変数が設定されていません。」 >というエラーがでます。 当方では正しく動作します。 記述ミスを疑います。 Office2003では動作確認していませんが それが原因とは考えにくいです。 それでもよくわからないようなら 入力しているコード、 エラー画面、 シート画面を示してみてください。
お礼
できました。 >B2セルに=日別勤怠(A2) の部分で記述ミスがありました。 お騒がせしました。 ありがとうございました。
- HohoPapa
- ベストアンサー率65% (455/693)
もう一案 期待のユーザ定義関数で、 かつ、引数を与えたくない、 つまり、 =日別勤怠() としたいのであれば、 Function 日別勤怠() As Long Dim i As Long i = Application.ThisCell.Row 日別勤怠 = i * 3 End Function といったコードでイケルと思います。
補足
申し訳ありません。もう一案のこちらの方はできたのですが、回答No.1の方は「オブジェクト変数またはwithブロック変数が設定されていません。」というエラーがでます。 補足頂けると助かります。
お礼
ありがとうございます。できました。 解説も付けて頂き、理解することもできました。