Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können Vorgänge anwenden oder Eigenschaften auf mehrere Bereiche gleichzeitig festlegen, auch wenn sie nicht zusammenhängend sind. Dadurch wird der Code im Vergleich zum separaten Zugriff auf jeden Bereich kürzer und effizienter.
Wichtige Punkte
- Verwenden Sie
RangeAreas, um die gleiche Sache in mehreren separaten Bereichen in einem Aufruf zu lesen oder festzulegen. - Eine -Eigenschaft ist
null, es sei denn, alle Memberbereiche haben denselben Wert. - Legen Sie eine Eigenschaft einmal für das
RangeAreasObjekt fest, anstatt eine Schleife auszuführen, es sei denn, jeder Bereich benötigt eine andere Logik. - Vermeiden Sie große
RangeAreasObjekte, die aus vielen einzelnen Zellen bestehen. Grenzen Sie zuerst mitgetSpecialCellsoder anderen Filtern ein. - Seien Sie vorsichtig mit ganzen Spalten oder Zeilen. Weitere Informationen finden Sie unter Lesen oder Schreiben in einen unbegrenzten Bereich.
RangeAreas
Ein RangeAreas-Objekt stellt eine Reihe von Bereichen dar, die möglicherweise nicht berührt werden. Es teilt viele Member mit Range, mit einigen Unterschieden in der Rückgabe von Werten.
Beispiele:
-
addressgibt eine durch Trennzeichen getrennte Zeichenfolge aller Adressen zurück. -
dataValidationgibt nur dann ein einzelnes Objekt zurück, wenn jeder Bereich dieselbe Regel aufweist, andernfalls wird zurückgegebennull. -
cellCountist die Gesamtanzahl der Zellen in allen Bereichen. -
calculateberechnet alle Zellen im Satz neu. -
getEntireColumnundgetEntireRowgeben eine neueRangeAreaszurück, die sich über vollständige Spalten oder Zeilen für jedes Element erstreckt. -
copyFromakzeptiert entweder einRangeoder einRangeAreasals Quelle.
Vollständige Liste von Bereichselementen, die auch in RangeAreas verfügbar sind
Eigenschaften
Bevor Sie Code schreiben, der aufgelistete Eigenschaften liest, sollten Sie sich mit Lesen von Eigenschaften von RangeAreas vertraut machen. Es gibt Besonderheiten dahingehend, was zurückgegeben wird.
addressaddressLocalcellCountconditionalFormatscontextdataValidationformatisEntireColumnisEntireRowstyleworksheet
Methoden
calculate()clear()convertDataTypeToText()convertToLinkedDataType()copyFrom()getEntireColumn()getEntireRow()getIntersection()getIntersectionOrNullObject()-
getOffsetRange()(für dasRangeAreasObjekt benanntgetOffsetRangeAreas) getSpecialCells()getSpecialCellsOrNullObject()getTables()-
getUsedRange()(für dasRangeAreasObjekt benanntgetUsedRangeAreas) -
getUsedRangeOrNullObject()(für dasRangeAreasObjekt benanntgetUsedRangeAreasOrNullObject) load()set()setDirty()toJSON()track()untrack()
RangeArea-spezifische Eigenschaften und Methoden
Der RangeAreas-Typ verfügt über einige Eigenschaften und Methoden, die sich nicht im Range-Objekt befinden. Im Folgenden ist eine Auswahl dieser Optionen aufgeführt.
-
areas: EinRangeCollection-Objekt, das alle vomRangeAreas-Objekt dargestellten Bereiche enthält. DasRangeCollection-Objekt ist auch neu und ähnelt den anderen Excel-Auflistungsobjekten. Es enthält eineitems-Eigenschaft, die ein Array vonRange-Objekten ist, die die Bereiche darstellen. -
areaCount: Die Gesamtanzahl von Bereichen inRangeAreas. -
getOffsetRangeAreas: Funktioniert genauso wie Range.getOffsetRange, mit dem Unterschied, dassRangeAreaszurückgegeben wird und Bereiche enthält, die alle von einem der Bereiche im ursprünglichenRangeAreasversetzt sind.
Erstellen von RangeAreas
Sie können ein RangeAreas Objekt auf verschiedene Arten erstellen. Die folgende Liste enthält einige Beispiele.
- Rufen Sie
Worksheet.getRanges()auf, und übergeben Sie eine Zeichenfolge mit durch Trennzeichen getrennten Bereichsadressen. Wenn einer der Bereiche, den Sie einschließen möchten, in ein NamedItem umgewandelt wurde, können Sie den Namen anstelle der Adresse in die Zeichenfolge einschließen. - Rufen Sie
Range.getSpecialCells()einRangeAreasObjekt mit Zellen eines bestimmten Typs auf, und geben Sie es zurück, z. B. Zellen, die Formeln, Datenüberprüfungen oder bedingte Formatierungen enthalten. - Aufrufen von
Workbook.getSelectedRanges()Diese Methode gibt einRangeAreas-Objekt zurück, das alle Bereiche darstellt, die in dem derzeit aktiven Arbeitsblatt ausgewählt sind.
Wenn Sie ein RangeAreas-Objekt haben, können Sie andere Objekte mithilfe der Methoden in dem Objekt erstellen, die RangeAreas zurückgeben, z. B. getOffsetRangeAreas und getIntersection.
Hinweis
Einem RangeAreas-Objekt können nicht direkt weitere Bereiche hinzugefügt werden. Die Auflistung in RangeAreas.areas weist beispielsweise keine add-Methode auf.
Warnung
Versuchen Sie nicht, Member des RangeAreas.areas.items Arrays direkt hinzuzufügen oder zu löschen. Dies führt zu unerwünschtem Verhalten im Code. Es ist beispielsweise möglich, ein weiteres Range-Objekt in das Array zu pushen, dadurch werden aber Fehler verursacht, da sich RangeAreas-Eigenschaften und -Methoden so verhalten, als wäre das neue Element nicht vorhanden. Die areaCount-Eigenschaft schließt beispielsweise keine Bereiche ein, die auf diese Weise gepusht wurden, und RangeAreas.getItemAt(index) löst einen Fehler aus, wenn index größer ist als areasCount-1. In ähnlicher Weise werden durch Löschen eines Range-Objekts im RangeAreas.areas.items-Array durch Abrufen eines Verweises darauf und durch Aufrufen der Range.delete-Methode Fehler verursacht: Obwohl das Range-Objekt gelöscht wurde, verhalten sich die Eigenschaften und Methoden des übergeordneten RangeAreas-Objekts so, als wäre es immer noch vorhanden. Wenn der Code beispielsweise RangeAreas.calculate aufruft, versucht Office den Bereich zu berechnen, schlägt jedoch fehl, da das Bereichsobjekt fehlt.
Festlegen von Eigenschaften für mehrere Bereiche
Durch Festlegen einer Eigenschaft für ein RangeAreas-Objekt wird die entsprechende Eigenschaft in allen Bereichen in der RangeAreas.areas-Sammlung festgelegt.
Nachfolgend finden Sie ein Beispiel zum Festlegen einer Eigenschaft in mehreren Bereichen. Die Funktion hebt die Bereiche F3:F5 und H3:H5 hervor.
await Excel.run(async (context) => {
let sheet = context.workbook.worksheets.getActiveWorksheet();
let rangeAreas = sheet.getRanges("F3:F5, H3:H5");
rangeAreas.format.fill.color = "pink";
await context.sync();
});
Dieses Beispiel gilt für Szenarien, in denen Sie die Bereichsadressen, die Sie an getRanges übergeben, hartcodieren oder einfach zur Laufzeit berechnen. Zu einigen der Szenarien, in denen dies der Fall ist, gehören die Folgenden:
- Der Code wird im Kontext einer bekannten Vorlage ausgeführt.
- Der Code wird im Kontext importierter Daten ausgeführt, in denen das Schema der Daten bekannt ist.
Kombinieren mit RangeAreasgetSpecialCells
Filtern Sie einen RangeAreas nach unten, um nur die Zellen anzuzeigen, die einem Kriterium entsprechen, z. B. Formeln, bevor Sie Formatierungen oder Überprüfungen anwenden.
await Excel.run(async (context) => {
const sheet = context.workbook.worksheets.getActiveWorksheet();
// Two discontiguous vertical bands.
const targets = sheet.getRanges("A1:A100, C1:C100");
// Narrow to only the formula cells within those bands.
const formulaCells = targets.getSpecialCells(Excel.SpecialCellType.formulas);
formulaCells.format.fill.color = "lightYellow";
await context.sync();
});
Abrufen von bestimmten Zellen aus mehreren Bereichen
Die getSpecialCells- und getSpecialCellsOrNullObject-Methoden für das RangeAreas-Objekt funktionieren analog zu den Methoden mit demselben Namen für das Range-Objekt. Mit diesen Methoden werden die Zellen mit den angegebenen Eigenschaften aus allen Bereichen in der RangeAreas.areas-Sammlung zurückgegeben. Weitere Informationen zu speziellen Zellen finden Sie unter Suchen nach speziellen Zellen innerhalb eines Bereichs.
Beim Aufrufen der getSpecialCells- oder getSpecialCellsOrNullObject-Methode für ein RangeAreas-Objekt trifft Folgendes zu:
- Wenn Sie
Excel.SpecialCellType.sameConditionalFormatals ersten Parameter übergeben, gibt die Methode alle Zellen mit der gleichen bedingten Formatierung wie die obere linke Zelle im ersten Bereich in derRangeAreas.areas-Sammlung zurück. - Wenn Sie
Excel.SpecialCellType.sameDataValidationals ersten Parameter übergeben, gibt die Methode alle Zellen mit der gleichen Regel für die Datenüberprüfung wie die obere linke Zelle im ersten Bereich in derRangeAreas.areas-Sammlung zurück.
Lesen von Eigenschaften von RangeAreas
Das Lesen von Eigenschaftswerten von RangeAreas erfordert Sorgfalt, da eine bestimmte Eigenschaft möglicherweise unterschiedliche Werte für unterschiedliche Bereiche innerhalb von RangeAreas haben kann. Die allgemeine Regel besteht darin, dass, wenn ein konsistenter Wert zurückgegeben werden kann, dieser auch zurückgegeben wird. Im folgenden Code wird beispielsweise der RGB-Code für Pink (#FFC0CB) und true in der Konsole protokolliert, da beide Bereiche im RangeAreas Objekt eine rosa Füllung aufweisen und beide ganze Spalten sind.
await Excel.run(async (context) => {
let sheet = context.workbook.worksheets.getActiveWorksheet();
// The ranges are the F column and the H column.
let rangeAreas = sheet.getRanges("F:F, H:H");
rangeAreas.format.fill.color = "pink";
rangeAreas.load("format/fill/color, isEntireColumn");
await context.sync();
console.log(rangeAreas.format.fill.color); // #FFC0CB
console.log(rangeAreas.isEntireColumn); // true
});
Da Eigenschaftswerte abweichen können, sollten Sie diese einfachen Regeln berücksichtigen.
- Boolesche Eigenschaften sind nur dann
truevorhanden, wenn sie in allen Bereichen true sind, andernfallsfalse. -
addressgibt immer die durch Trennzeichen getrennte Adresszeichenfolge zurück. - Andere Eigenschaften sind,
nulles sei denn, alle Bereiche haben denselben Wert.
Der folgende Code erstellt beispielsweise ein RangeAreas, in dem nur ein Bereich eine ganze Spalte ist und nur eine mit pink gefüllt ist. In der Konsole wird null für die Füllfarbe, false für die isEntireRow-Eigenschaft und „Sheet1!F3:F5, Sheet1!H:H“ (davon ausgehend, dass der Blattname „Sheet1“ ist) für die address-Eigenschaft angezeigt.
await Excel.run(async (context) => {
let sheet = context.workbook.worksheets.getActiveWorksheet();
let rangeAreas = sheet.getRanges("F3:F5, H:H");
let pinkColumnRange = sheet.getRange("H:H");
pinkColumnRange.format.fill.color = "pink";
rangeAreas.load("format/fill/color, isEntireColumn, address");
await context.sync();
console.log(rangeAreas.format.fill.color); // null
console.log(rangeAreas.isEntireColumn); // false
console.log(rangeAreas.address); // "Sheet1!F3:F5, Sheet1!H:H"
});
Siehe auch
Office Add-ins