前提・実現したいこと
C# VSTO で EXCELテンプレートを作っています。
ブック上にはListObjectを持っており
ListObject上の全行で特定の列(A列とB列)を使った計算式(=A列+B列)をC列に設定したいです。
Excel上の特定の列の数値を変更したときに連動して計算される必要があるので
数式をセルに残したいのですが、以下記載の通りうまくいきませんでした。
VSTOの知識が浅く、また周りに有識者も少ないため質問させていただきました。
ご助言宜しくお願いいたします。
試したこと
試したことは以下です。
(1)デザイナー上のListObjectに数式を設定
実行前のVisualStudio画面のデザイナー上のListObjectの対象セルに直接数式を入れるとその時点では数式が設定されるのですが、
起動し対象のListObjectがデータバインドされると数式が消えてしまいます。
(2)ソースコード上で書式を設定
なので、データ取得後に、ソースコード上で全行に対し数式の設定をする方向で対応しようとしたのですが
セルに対し数式を設定した結果、Excel上では数式の計算結果のみが表示され、
設定したセルにカーソルを合わせても数式バーに数式が表示されないという状態になります。
数式の設定は以下のコードのように実装しましたが、[1] [2] どちらも同じく結果のみがセル上に設定されてしまいました。
C#
1 foreach (Excel.ListRow row in listObj.ListRows) 2 { 3 // 指定した列に数式設定 4 // [1].そのまま設定 5 //((dynamic)row).Range.Columns[colIndex] = "=A列 + B列"; 6 // [2].Formulaプロパティに設定 7 ((dynamic)row).Range.Columns[colIndex].Formula = "=A列 + B列"; 8 }
(3)セルの書式の保護
セルの書式の保護設定のチェックは外しています。
補足情報(FW/ツールのバージョンなど)
Visual Studio 2019

あなたの回答
tips
プレビュー