我有一个 Windows 窗体,其中包含要显示的值列表,每个值都有一个相应的文本框,告诉程序在哪个单元格中显示它。当前用户输入一个范围(例如“A1”、“G6”等... ) 对于他们想要显示的每个值,并将剩余的留空。
有什么方法可以单击文本框,然后单击一个单元格并使该单元格引用出现在文本框中(例如 Goal Seek 的工作原理)?
在您的 VSTO 代码中,您应该能够处理 Worksheet 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;
获得对单元格的引用后,您可以使用此答案中的代码获取地址。
然后,您应该能够更新文本框的值。