代码之家  ›  专栏  ›  技术社区  ›  zzandy

在Excel VSTO中插入行事件?

  •  1
  • zzandy  · 技术社区  · 16 年前

    更简单的说法是 how to handle resize of range upon insert column/row in Excel via VSTO? ":

    2 回复  |  直到 9 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

    Worksheet.Change 或 Application.SheetChange 事件。

    Deleted Rows 迪克·库斯利卡。

    但是,如果您想要实现的只是确保插入行时范围对象的大小调整,那么,正如您所指出的, there is is nothing that you need to do

    希望这有帮助!

        2
  •  0
  •   TheAtomicOption    9 年前

    Worksheet.Change 相反

    我发现检查此事件处理程序中的行是否已更改的最快方法是比较 Target.Address == Target.EntireRow.Address Target.EntireColumn 用于列。请注意,如果插入失败,这也将返回true(例如,如果有一个透视表挡在路上,而Excel中止插入)

    private void ActiveWorksheet_Change(Excel.Range Target)
    {
        if(Target.Address == Target.EntireRow.Address)
        {
            //do stuff on insert/delete/cut+insert
        }
    }
    

    商场 Worksheet.UsedRange.Rows.Count Dictionary<string, int> 与 Worksheet.Name 作为关键。然后你比较新的 工作表.UsedRange.Rows.Count 保存的计数并相应地采取行动。请注意,这将打破有趣的方式后,工作表重命名或如果一个新的工作表得到一个旧的工作表的名称,除非你找到一种方法来捕捉这些类型的事件和更新/删除字典条目,但我还没有找到一个更好的方法来标识工作表,所以你必须考虑到这一点。