2017-05-29 8 views
0

Ich habe ein Problem mit dem Schreiben von Funktionen aus C# in Excel-Datei.Schreiben von Funktionen in Excel von C#

private void AddDemandFunctions() 
{ 
    Func<string, string, string> function = (range, shift) => 
    { 
     var builder = new StringBuilder(); 
     builder.Append("=LICZ.JEŻELI("); 
     builder.Append(range); 
     builder.Append("; \""); 
     builder.Append(shift); 
     builder.Append("\")"); 
     return builder.ToString(); 
    }; 

    int startRow = 5; 
    int endRow = 20; 
    string [] columns = { "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM" }; 

    foreach (var column in columns) 
    { 
     string range = column + startRow + ":" + column + endRow; 
     worksheet.Range[column + 21].Formula = function(range, "D"); // HERE I GET AN EXCEPTION RIGHT IN MY FACE :(
     worksheet.Range[column + 22].Formula = function(range, "E"); 
     worksheet.Range[column + 23].Formula = function(range, "L"); 
     worksheet.Range[column + 24].Formula = function(range, "N"); 
    } 
} 

Die Ausnahme ist:

An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll 
Additional information: Wyjątek od HRESULT: 0x800A03EC. 

My Excel (2010) polnische Sprachversion ist. Wenn ich versuchte, "=" zu löschen, funktioniert es, aber es schreibt nur Text. Dann, wenn ich "=" in Excel-Datei hinzufügen, ist alles in Ordnung. Es gibt keinen Fehler in der Funktionszeichenfolge.

ich mit nicht-polnisch-Funktion auch versucht: COUNTIF und ich habe die gleiche Ausnahme ...

Irgendwelche Ideen?

Grüße von PL :)

+0

möglich duplizieren: https://stackoverflow.com/questions/16400302/excel-worksheet-cellsrow-col-formula-vs-range-set-valuemissing-value- a – ASh

+0

Ich denke, dass ich andere Bibliothek verwende, weil ich Metode Set_Value auf Range Objekt wie in Ihrem Thema nicht habe ... – Roofy

+0

ist es excel.interop? Versuchen Sie 'Value' Eigenschaft (' set_Value' ist ein Setter) – ASh

Antwort

1

Sie haben zu prüfen, was wirklich in Zelle ist, wenn Sie Formel manuell eingeben. Excel zeigt "= COUNTIF (E5: E20;" D ")" in der Formelleiste, aber wenn Sie echten Inhalt lesen, sehen Sie dort "= COUNTIF (E5: E20," D ")" < - beachten Sie bitte Komma statt Semikolon in der Formel.

Wie geht das? Formel manuell in die Zelle schreiben, den VBA-Editor öffnen (Alt + F11 oder Strg + G) und das Direktfenster eingeben, d. Worksheet.range ("G1"). Formel - hängt davon ab, wo Sie die Formel natürlich eingegeben haben.

Wenn Sie formatieren Sie Ihre Formel nach dem, was angezeigt wird, Excel wird nichts in Ihrem Gesicht werfen ;-)

Ich nehme an, es auch komma ist> Semikolon Problem.

EDIT: Sorry Arbeitsblatt war meine lokale Variable. Sie müssen Syntax verwenden:

? ActiveWorkbook.ActiveSheet.range ("G1"). Formel

+0

Sie sind genial! Vielen Dank funktioniert es. Das Problem war mit Semikolon ";" => "," :) – Roofy