VSTO在文本框中显示选定的单元格引用

时间:2013-05-30 18:01:55

标签: c# excel vsto

我有一个带有值列表的Windows窗体,每个窗口都显示一个相应的文本框,告诉程序显示它的单元格。目前用户输入一个范围(例如“A1”,“G6”等) ...)对于他们想要显示的每个值,留下剩余的空白。

有没有办法点击进入文本框,然后单击一个单元格并让该单元格引用出现在文本框中(就像Goal Seek的工作方式一样)?

1 个答案:

答案 0 :(得分:1)

在您的VSTO代码中,您应该能够处理工作表SelectionChange事件

例如,在我们拥有的VSTO项目中,我们在启动时订阅了每个工作表的OnChange事件:

  private List<Excel.Worksheet> _Worksheets = new List<Excel.Worksheet>();

  private void ThisWorkbook_Startup(object sender, System.EventArgs e)
  {
   foreach (Excel.Worksheet sheet in Worksheets) //Could test for sheet name here
   {
    _Worksheets.Add(sheet);
    sheet.SelectionChange += 
        new Excel.DocEvents_SelectionChangeEventHandler(Sheet_SelectionChange);
   }
  }

您应该可以在处理程序中获取ActiveCell,例如:

Excel.Range activeCell = (Excel.Range) this.Application.ActiveCell;

//get the cell value (or other properties)
object value = rng.Value;

获得对单元格的引用后,您可以使用this answer中的代码获取地址。

然后,您应该能够更新文本框的值。