数式をVBAで埋め込むと 「#CALC! 」 と表示されます。

Anonymous
2018-11-02T11:01:44+00:00

Office Insider  バージョン 1811

INDIRECT 関数にROW ()  関数を埋め込んだ場合です。

  Range("B1:B10").FormulaR1C1 = "=INDIRECT(""R4C""&ROW()+11,0)"

なぜか、この関数をシート直接入力した場合は発生しません。

以前は問題なく使えていました。

Microsoft 365 Insider | Excel | Windows
Microsoft 365 Insider | Excel | Windows

データの分析、グラフ作成、および通信のためのツールを備えた Microsoft 表計算ソフトウェアのファミリ。

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません
質問作成者が受け入れた回答
削除済み

この回答は当社の行動規範に違反したため削除されました。 アクションを実行する前にこの回答を手動で報告したか、自動検出機能により特定しました。 詳細については、当社の行動規範を参照してください。


コメントはオフになっています。 詳細情報

3 件の追加の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2018-11-05T01:04:10+00:00

    確認してみました。

    やはりこの方法でも「#CALC!」のエラー表示されます。

    MSのサポートに確認しましたが、インサイダーで発生している不具合だそうです。

    これは、Current  Channelに配信されてしまうのでしょうか。

    おそらく代入後のROW()評価タイミングの問題でしょう

    横着せずに、セルごとにループを回して指定することが必要です。

    概念的にはこんな感じです。

    For Each rg In range("B1:B10")

     rg.FormulaR1C1 = "=INDIRECT(""R4C""&ROW()+11,0)"

    Next rg

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2018-11-02T11:53:12+00:00

    おそらく代入後のROW()評価タイミングの問題でしょう

    横着せずに、セルごとにループを回して指定することが必要です。

    概念的にはこんな感じです。

    For Each rg In range("B1:B10")

     rg.FormulaR1C1 = "=INDIRECT(""R4C""&ROW()+11,0)"

    Next rg

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2018-11-02T11:41:56+00:00

    NISIIE さま ありがとうございます。

    そうなんですね。

    今まで問題なく出来ていたのと、はじめてみた「#CALC!」のエラーメッセージで驚いていました。

    横着しないということですね。

    ただ、修正する箇所がとても多くて大変なんです。

    他に何かいい方法があると助かります。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません