我使用C#互操作,以获得从Excel工作表取决于传递给函数的参数的值存在,我收到以下错误:C#互操作的名称未在当前的背景下
the name 'sheet' does not exist in the current context
这是我的代码:
public void getIndexes(int num)
{
var wb = (Excel.Workbook)Globals.ThisAddIn.Application.ActiveWorkbook;
var wsEvars = wb.Sheets["Evars"];
var wsEvents = wb.Sheets["Events"];
if (num == 0)
{
var sheet = wsEvars;
}
if (num == 2)
{
var sheet = wsEvents;
}
if (num != 2)
{
var rng = (Excel.Range)sheet.Range[sheet.Cells[3, 2], sheet.Cells[3, 25]];
}
}
我假设sheet
变量应该第一if
语句之前被初始化...但它应该是这个变量,因为它是一个COM对象的类型?
这只是一个'Excel.Worksheet'在这两种情况下。所以'Excel.Worksheet sheet = null;'在你说的第一个'if'之前。 – Equalsk
如果某人传递了不是“0”或“2”的int值,该怎么办?听起来你可能想要一个'enum'来代替。 – Equalsk
这些值从另一个函数传递,它们可以只有0和2 – Valip