3

以下のコードで C# を使用して条件付き書式を追加しようとしています。

Microsoft.Office.Interop.Excel.FormatCondition formatConditionObj = null;

formatConditionObj = (Microsoft.Office.Interop.Excel.FormatCondition)myRange
.FormatConditions.Add(Excel.XlFormatConditionType.xlExpression, 
Type.Missing, true, Type.Missing, Type.Missing, Type.Missing, 
Type.Missing, Type.Missing);

formatConditionObj.Interior.ColorIndex = 5;

これらのフォーマットが適用される範囲を動的に変更します

formatConditionObj.ModifyAppliesToRange(NewRange);

今、適用されているこのフォーマットを削除したいと思います。これをどのように達成できますか。

formatConditionObj.Delete();

これは私にはうまくいきません。これにより、適用されているすべてのセルの書式が削除されるわけではありません。最後のセルの書式のみが削除されます。

私も使ってみました

formatConditionObj.AppliesTo.Delete();

ただし、そのセルに適用されている他の ConditionalFormats も削除します。

注: 一部の書式は、この条件付き書式が適用されるセルに既に適用されています。たとえば、一部の塗りつぶしの色です。一部のセルに適用される条件付き書式が他にもいくつかあります。この特定の ConditionalFormat(formatConditionObj) を削除したいだけです。

誰でも私を助けることができますか?

4

2 に答える 2

1

セルに複数の条件がある場合、このような書式条件を削除することはできません。条件付きフォーマットを削除するには、番号でアドレス指定する必要があります。

この例を考えてみましょう。(テスト済み)

以下のコードは新しいワークブックを作成し、シート 1 でセル A1 に 2 つの書式条件を作成します。2 つの条件を作成した後、アプリケーションはメッセージ ボックスを表示して一時停止します。Excel に移動し、作成された条件付き書式を手動で調べます。(スナップショット 1)。完了したらOK、メッセージ ボックスの をクリックします。次に、コードは条件 1 を削除し、メッセージ ボックスを表示して再び一時停止します。Excel に移動し、条件付き書式を手動で調べます。条件付き書式が 1 つ (正確には 2 つ目) しか残っていないことに気付くでしょう。(スナップショット 2)

    private void btnSearch_Click(object sender, EventArgs e)
    {
        Microsoft.Office.Interop.Excel.Application xlexcel;
        Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
        Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;

        xlexcel = new Excel.Application();
        xlexcel.Visible = true;

        //~~> Add a File
        xlWorkBook = xlexcel.Workbooks.Add();
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

        //~~> Create 2 Conditions
        xlWorkSheet.Cells[1, 1].FormatConditions.Add( 1,5,"=5");
        xlWorkSheet.Cells[1, 1].FormatConditions.Add(1, 5, "=10");

        MessageBox.Show("Wait");
        //~~> Now if you check the Excel file, Cell A1 has two conditional formats.
        //~~> See Snapshot 1

        //~~> Delete the first condition
        xlWorkSheet.Cells[1, 1].formatconditions(1).delete();

        MessageBox.Show("Wait");
        //~~> Now if you check the Excel file, Cell A1 has only 1 conditional format.
        //~~> See Snapshot 2
    }

スナップショット 1

ここに画像の説明を入力

スナップショット 2

ここに画像の説明を入力

于 2012-08-08T07:46:21.700 に答える