2011-09-16 14 views
1

所以我問過如何使用c#更改excel內的單元格中的值,但是如果要更改下拉列表的值,該怎麼辦。下面是我用於修改表單的代碼。任何幫助表示讚賞。更改下拉列表中的值Excel C#

public virtual Object ActiveSheet { get; set; } 

private void button3_Click(object sender, EventArgs e) 
{ 
var sheet = (Excel._Worksheet)this.ActiveSheet; 
sheet.Cells[6, 6] = "6"; 
} 

我得到的片打開,但是當它到列表中它給我的NullReferenceException。

+0

什麼樣的清單是? –

+0

其下拉列表,例如其中一個下拉列表有2,4,6作爲選項,我有它訪問表,現在我想自動能夠更改列表值 –

+0

什麼**類型**下拉列表?有我能想到的3種不同類型。 –

回答

2

想通了我花了很長時間請使用它!

using Excel = Microsoft.Office.Interop.Excel; 

    public virtual Object ActiveSheet { get; set; } 

    private void button15_Click(object sender, EventArgs e) 
    { 
     //Gets ActiveSheet to Modify 
     Excel.Application oXL; 
     Excel.Workbook oWB; 
     Excel.Worksheet oSheet; 

     //Start Excel and get Application object. 
     oXL = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); 
     oXL.Visible = true; 
     oWB = (Excel.Workbook)oXL.ActiveWorkbook; 
     oSheet = (Excel.Worksheet)oWB.ActiveSheet; 

     //Generate Linear Guide Supports using Design Table in Solidworks 
     if (comboBox1.Text == "0")//no external rails 
     { 
      oSheet.Cells[6, 4] = "0"; //Change Value in Cell in Excel Cell Location [y-axis, x-axis] 
     } 
     //Quit Excel 
     oXL.Quit(); 
    } 
0

在第二行設置一個斷點,並看看sheet等於什麼。

如果您尚未激活工作簿中的工作表,那麼wb.ActiveSheet將不會等於任何內容。

我想你明確地必須將sheet設置爲wb.Sheets(0)或者任何一張紙是需要的。

+0

對不起,我實際上編輯錯了它應該是this.ActiveSheet –

+0

@Russel啊,好吧。但是你有沒有事先激活一張紙?我需要爲自己測試它,但引擎可能無法自動激活第一張紙。如果你已經激活了它,'sheet'有一個值,我同意其他評論者,你可能需要顯示更多的代碼。 – jonsca

+0

是的,它實際上使用Solidworks設計表格非常複雜。它實際上打開了窗口,然後停止並給出NullReferenceException。所以我想我引用單元格的方式可能是錯誤的,即突出顯示的行 –

相關問題