- ベストアンサー
エクセル2007
すいません。どなたかお教え下さい。 今までのエクセルでVBAで作ったもので、使えないものがあります。もともとの関数ではなく、Functionプロシージャ(でしたでしょうか?)で自分で作った関数が使えないようなのです。 新しいエクセルの参照設定はMicrosoft Excel 12.0 Object Libraryで、今までのはMicrosoft Excel 9.0 Object Library でした。(Microsoft Office 12.0 Object Libraryも同様に9.0でした) これが原因じゃないかと思っているのですが、もしそうだとすると、これの解決方法を教えて欲しいです。 これが原因じゃないとしたら、原因として考えられることを教えて欲しいです。 漠然とした質問で申し訳ないです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
コードに問題はないようです。 参照設定の件も関係はないように思います。 >正しい結果が表示されないで「#NAME」と表示されます。 「#NAME」のエラー値は関数名が違っている時に表示されます。 cistronezkさんも触れられていますが、関数名が間違っているとかいうことはないでしょうか。 ユーザー定義関数はどこに置いて(保存して)いますか? 特定のBookに保存している場合、他のBookでは「#NAME」となります。 他のパソコンで表示する場合も、同じユーザー定義関数が存在しないので、同じエラーになると思います。
その他の回答 (4)
- xls88
- ベストアンサー率56% (669/1189)
回答番号:No.4 で変なことを書いてしまいました。 >他のパソコンで表示する場合も、 >同じユーザー定義関数が存在しないので、 >同じエラーになると思います。 ユーザー定義関数が、保存されているBookなら、大丈夫ですね。
- cistronezk
- ベストアンサー率38% (120/309)
>その自作の関数を入力したセルに、正しい結果が表示されないで「#NAME」と表示されます。 自作の関数は、数式バーの「fx」ボタンを押して「関数の分類」を「ユーザ定義」にすると、リストにちゃんと出てきますか? あるいは、自作関数に引数を渡しているかと思いますが、 =MyFunc(SomeFunc(A1)) のように他の関数をわたしていませんか? その場合は、「SomeFunc()」単独で問題なく使えることを確認していますか?
お礼
お返事ありがとうございます。 言われたことを確認しましたところ、リストには出ています。 また、関数の中に関数は入れていません。生年月日が入力されたセルと、基準日が入力されたセルを指定しています。
- xls88
- ベストアンサー率56% (669/1189)
問題のFunctionプロシージャのコードを提示できないでしょうか。
お礼
お返事ありがとうございます。 私が作ったものではないので、詳細はわかりませんが、生年月日を基準日を入力すると、基準日時点の年齢が表示される関数です。 Function age(aa, bb) Dim ay, am, ad, by, bm, bd ay = Year(aa) am = Month(aa) ad = Day(aa) by = Year(bb) bm = Month(bb) bd = Day(bb) If bb = "" Then age = "" Else age = Int(((ay - by) * 10000 + (am - bm) * 100 + (ad - bd)) / 10000) End If End Function
- cistronezk
- ベストアンサー率38% (120/309)
「使えない」とは?使うと具体的にどうなってしまうのですか? エラーメッセージとかでますか?何というエラーですか? デバッグモードになってエラー行が表示されると思いますが、どういうコードがかかれていますか?
お礼
お返事ありがとうございます。 説明不足ですいませんでした。 デバッグモードにはならないです。 その自作の関数を入力したセルに、正しい結果が表示されないで「#NAME」と表示されます。
お礼
解決しました!ありがとうございました! 原因は、マクロの設定を有効にしていないという初歩的なものでした。大変お騒がせしました。 今までのエクセルだと、マクロを含んだブックを開くとマクロを有効にするかメッセージが出たのですが、エクセル2007だとそれが出ないので、忘れてしまっていました。 お手数をおかけしました。