• ベストアンサー

Excel:自作のセル関数でエラーが発生

Win2K、Excel97-2000-2002を使用しております。 以下のような関数を作成しました。 Public Function sss() As Boolean  On Error GoTo aaa   Range("A1").Value = "TEST"  sss = True Exit Function aaa:  MsgBox Err.Description  sss = False End Function これをSheet1のB1セルで呼びましたところ、 Rangeへのセットのところで以下のようなエラーが発生します。 「アプリケーション定義またはオブジェクト定義のエラーです。」 同関数をイミディエイトウインドウで実行しましたところ、正常に動きます。 セルの内容を変更するようなメソッドをセル関数として呼ぶことはしてはいけないのでしょうか。 御教授、御鞭撻の程、よろしくお願いいたします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

エクセルのユーザー関数は、値を返すだけにしないといけません。その関数を使うセルは別として、他のセルの値や プロパティ(値もプロパテイですが)を設定することは許しません。Subプロセジュアとの住み分けを厳密に規定しているようです。メソッドに当たるものも、だめでしょう。 Range以外の他のオブジェクトのプロパティに関する設定も だめでしょう。 Range("A1").Value = "TEST"の部分はエラーの素です。

o_w_nakazaki
質問者

お礼

ご教授くださいまして。ありがとうございます。 そういった関連のドキュメントがどこにも見つけられなくて 質問してめみました。 解決いたしました。ありがとうございます。

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 ユーザー定義関数で、他のセルにデータを入力する方法です。 ちょっとイレギュラーな方法ですが。 いったん目的のセルにハイパーリンクを設定して(ここで表示文字列を設定)、その後でハイパーリンクを削除します。 Function DispData(rg As Range, str As String) As Long   ActiveSheet.Hyperlinks.Add Anchor:=rg, Address:="", TextToDisplay:=str   rg.Hyperlinks.Delete End Function これで、どこかのセル(A1以外)に、 =dispdata(A1,"TEST") と入力すると、A1に「TEST」という文字列が入ります。

o_w_nakazaki
質問者

お礼

ご回答いただきまして、ありがとうございます。 ご提示頂いた例、今後の参考にさせていただきます。

関連するQ&A