Laden...

System.Office.Interopt.Excel outside the bounds of the array

Letzter Beitrag vor 2 Jahren 3 Posts 1.428 Views
System.Office.Interopt.Excel outside the bounds of the array

Hallo Leute,

Ich habe folgendes Problem:

Wenn ich folgenden Code aufrufe:


 internal static void CellsMerge(string address)
        {
            string[] splited = address.Split(Convert.ToChar(":"));
            int firstCol;
            int firstRow = Cvr.GetIndexes(splited[0], out firstCol);
            int lastCol;
            int lastRow = Cvr.GetIndexes(splited[1], out lastCol);

            Exc.Range rng = Ws.CurrentSheet.Range[Ws.CurrentSheet.Cells[firstRow, firstCol], Ws.CurrentSheet.Cells[lastRow, lastCol]] as Exc.Range; // Beim erstellen des Rangeobjekt, entsteht der Fehler.  Die Felder firstCol, firstRow, lastCol und lastRow sind  entsprechend Excel 1 basiert und richtig initialisiert.
            rng.Merge(Type.Missing);

        }

Fehlermeldung:

Index was outside the bounds of the array

Auch nach intensivem suchen, konnte ich keine Lösung finden. Die in den meisten Beispielen benutzte get_Range-Methode ist Obsolet und neuere Beispiele selten!

LG Alex

Hallo Maendler53


 internal static void CellsMerge(string address)
        {
            string[] splited = address.Split(Convert.ToChar(":"));
            int firstCol;
            int firstRow = Cvr.GetIndexes(splited[0], out firstCol);
            int lastCol;
            int lastRow = Cvr.GetIndexes(splited[1], out lastCol);

            var von = Ws.CurrentSheet.Cells[firstRow, firstCol];
            var bis = Ws.CurrentSheet.Cells[lastRow, lastCol];

            Exc.Range rng = Ws.CurrentSheet.Range[von, bis] as Exc.Range; // Beim erstellen des Rangeobjekt, entsteht der Fehler.  Die Felder firstCol, firstRow, lastCol und lastRow sind  entsprechend Excel 1 basiert und richtig initialisiert.
            rng.Merge(Type.Missing);
        }

Mach das doch mal so, geh mit dem Debugger rein und schau dir an, ob die Exception bei 'von', oder bei 'bis' geworfen wird.

Gruß
Alf

Danke Alf

Mit den variabeln von, bis wurder der fehler auch geworfen:

Nach dem Boxing:

var von = Ws.CurrentSheet.Cells[firstRow, firstCol]as Exc.Range;
var bis = Ws.CurrentSheet.Cells[lastRow, lastCol] as Exc.Range;

läufte es nun tadellos!

Gruss Alex