2017-01-04 4 views
0

Beim Versuch, die Eigenschaft range.format.fill zu ändern, wird in JavaScript ein Fehler ausgegeben, der besagt, dass eine schreibgeschützte Eigenschaft nicht geändert werden kann Wert im strikten Modus. Vielleicht ist das format (oder fill) -Objekt intern als schreibgeschützte Eigenschaft deklariert und sollte gelesen/geschrieben werden? Wenn ich range.clear benutze, habe ich Erfolg, zäh, deshalb nehme ich an, dass der Fehler entweder im Format oder in der Füllung, aber nicht im Bereich liegt.range.format.fill wird als schreibgeschützt betrachtet, sollte aber schreibgeschützt sein

Der Code ist:

(function() { 
    "use strict"; 

    // The initialize function must be run each time a new page is loaded 
    Office.initialize = function (reason) { 
     $(document).ready(function() { 
      app.initialize(); 

      $('#paint-range').click(paintRange); 
     }); 
    }; 

    function paintRange() { 
     Excel.run(function (ctx) { 
      var range = ctx.workbook.names.getItem("Countries").getRange(); 
      range.format.fill = "red"; 

      return ctx.sync(); 
     }).catch(function (error) { 
      app.showNotification("Error", error); 
     }) 
    } 

})(); 

Ich erhalte den Fehler an:

range.format.fill = "red"; 

Antwort

2

Der Fehler, den Sie eigentlich immer richtig ist. "Fill" ist keine primitive Eigenschaft - es ist ein API-Objekt (auch "Navigationseigenschaft" genannt). Für das, was Sie zu tun versuchen, würden Sie die tatsächliche Eigenschaft, die Sie ändern möchten, angeben müssen - in diesem Fall Farbe:

range.format.fill.color = "red" 

Eine Beschreibung der primitiven vs. API Objekteigenschaften finden Abschnitt "Skalar vs. Navigationseigenschaften - und ihre Auswirkung auf das Lastverhalten" unter http://buildingofficeaddins.com/loading-properties/

+0

Danke, Michael! Ich werde den Link lesen und vorsichtiger mit Excel JS-Objektmodell sein! –

Verwandte Themen