Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2240|回复: 3

C#根据VBA改编的添加条件选择的代码

[复制链接]
发表于 2012-5-30 14:08 | 显示全部楼层 |阅读模式
RT,代码添加后 每次在单元格change后,规则的值都会变化。。。。我这里是写死的啊 为什么会变成最大的行数。。。
try
            {
                //添加验证功能,在每次新增时后去将当前currentrange获取为当前范围,然后通过条件选择的公式追加突出显示的功能//
                ////////////////////新增一条记录后,用户对新增的记录做修改的同时,此突出显示将会生效///////////////////////
                Excel.Worksheet ws = Globals.ThisWorkbook.Worksheets[5];
                Range current_rang = Target.CurrentRegion;
                object mis = System.Type.Missing;
                if (current_rang.FormatConditions.Count > 0)
                {
                    current_rang.FormatConditions.Delete();
                }
                int count = current_rang.Rows.Count;
                //Range selectionrange = ws.get_Range((Range)ws.Cells[7, 2], (Range)ws.Cells[count+5, 4]);
                //string text = "=SUMPRODUCT(($B$2:$B$" + (count).ToString() + "=$B2)*($C$2:$C$" + (count).ToString() + "=$C2)*($D$2:$D$" + (count).ToString() + "=$D2))>1";
                string text = "=SUMPRODUCT(($B$7:$B$" + (count + 5).ToString() + "=$B7)*($C$7:$C$" + (count + 5).ToString() + "=$C7)*($D$7:$D$" + (count + 5).ToString() + "=$D7))>1";
                Excel.FormatCondition cond =
    (Excel.FormatCondition)current_rang.FormatConditions.Add(Excel.XlFormatConditionType.xlExpression,
    Excel.XlFormatConditionOperator.xlEqual, text,
    mis, mis, mis, mis, mis);
                cond.ModifyAppliesToRange(ws.get_Range((Excel.Range)ws.Cells[7, 4], (Excel.Range)ws.Cells[count + 5, 4]));
                cond.Interior.PatternColorIndex = Excel.Constants.xlAutomatic;
                cond.Interior.TintAndShade = 0;
                cond.Interior.Color = XlRgbColor.rgbGreenYellow;
                cond.StopIfTrue = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
return;
}

效果如图

效果如图


如上图 这是通过代码执行后的问题所在。

 楼主| 发表于 2012-5-30 14:09 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2012-5-30 14:10 | 显示全部楼层
对了 我是放在 private void ListKey_Change(Range targetRange, ExcelTools.ListRanges changedRanges)
       这个事件中执行的,就是每次单元格的值改变时
回复

使用道具 举报

发表于 2012-5-30 18:16 | 显示全部楼层
搞不懂你的代码,可否把附件传上来学习下呢?

{:041:}{:041:}{:041:}{:041:}{:041:}{:041:}{:041:}{:041:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-4 22:16 , Processed in 0.924525 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表