2016-05-16 7 views
1

Ich verwende COM-Interop in C#, um Daten in einer Excel-Tabelle anzuzeigen. Angenommen, ich habe eine Datenstruktur für 'Student Details' in C# und dies wird in Excel entsprechend angezeigt.Binden einer C# -Variablen an eine Excel-Zelle

Ist es jetzt möglich, den Wert einer bestimmten Variablen in C# zu ändern, wenn die entsprechende Zelle in Excel bearbeitet wird?

Zum Beispiel, sobald die Markierungen von Student x in der Excel-Tabelle geändert wird, muss die Variable entsprechend den Markierungen in C# geändert werden.

Bei Bedarf könnte auch VBA-Code verwendet werden! Ich weiß nicht, ob so etwas möglich ist, aber es wäre großartig, wenn ich hier eine Antwort finden könnte.

+0

Ist das Teil eines Add- im? VSTO? Sie können das Ereignis 'Worksheet_Change' verwenden, um Änderungen im Arbeitsblatt zu erfassen und entsprechend zu reagieren. –

Antwort

2

Hier ist ein Beispiel dafür, wie Sie das mit einem Event-Handler kann:

Excel.DocEvents_ChangeEventHandler eventChange_CellData; 
int someStudentsScore = 99; 

private void Load_Workbook() 
{ 
    Excel.Application xlApp = new Excel.Application(); 
    Excel.Workbook xlBook = xlApp.Workbooks.Add(); 
    Excel.Worksheet xlSheet = (Excel.Worksheet)xlBook.Sheets.Item[1]; 

    xlSheet.Name = "Student Data"; 

    // Your code for populating data somewhere here.... 

    eventChange_CellData = new Excel.DocEvents_ChangeEventHandler(DataChange); 

    xlSheet.Change += eventChange_CellData; 

} 

private void DataChange(Excel.Range target) 
{ 
    if(target.Address == "$A$1") 
    { 
     // If A1 is changed, then change variable. 
     someStudentsScore = target.Value2; 
    } 
} 

Das VBA-Äquivalent von dieser in der Modul Arbeitsblatt würde:

Public someStudentsScore 

Private Sub Worksheet_Change(ByVal Target As Range) 

If Target.Address = "$A$1" Then 
    '// You would probably have to create a wrapper of some kind to get your C# 
    '// variable into the VBA routine(s)... 
    someStudentsScore = Target.Value 
End If 

End Sub 
Verwandte Themen