Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Pode aplicar operações ou definir propriedades em vários intervalos ao mesmo tempo, mesmo que não sejam contíguas. Isto torna o código mais curto e eficiente quando comparado com o acesso a cada intervalo separadamente.
Principais pontos
- Utilize
RangeAreaspara ler ou definir o mesmo conteúdo em vários intervalos separados numa chamada. - Uma propriedade é
nulla menos que todos os intervalos de membros partilhem o mesmo valor. - Defina uma propriedade uma vez no
RangeAreasobjeto em vez de repetir, a menos que cada intervalo precise de lógica diferente. - Evite objetos grandes
RangeAreasfeitos de muitas células individuais. Reduza primeiro comgetSpecialCellsou outros filtros. - Tenha cuidado com colunas ou linhas inteiras. Para obter mais detalhes, consulte Ler ou escrever num intervalo não vinculado.
RangeAreas
Um objeto RangeAreas representa um conjunto de intervalos que podem não tocar. Partilha muitos membros com Range, com algumas diferenças na forma como os valores são devolvidos.
Exemplos:
-
addressdevolve uma cadeia delimitada por vírgulas de todos os endereços. -
dataValidationdevolve um único objeto apenas se cada intervalo tiver a mesma regra, caso contrário, devolvenull. -
cellCounté o total de células em todos os intervalos. -
calculaterecalcula todas as células no conjunto. -
getEntireColumnegetEntireRowdevolvem uma novaRangeAreasexpansão de colunas ou linhas completas para cada membro. -
copyFromaceita umRangeou umRangeAreascomo a origem.
Lista completa de membros do intervalo que também estão disponíveis em RangeAreas
Propriedades
Familiarize-se com as Propriedades de leitura do RangeAreas antes de escrever o código que lê as propriedades listadas. Existem sutilezas para o que é retornado.
addressaddressLocalcellCountconditionalFormatscontextdataValidationformatisEntireColumnisEntireRowstyleworksheet
Métodos
calculate()clear()convertDataTypeToText()convertToLinkedDataType()copyFrom()getEntireColumn()getEntireRow()getIntersection()getIntersectionOrNullObject()-
getOffsetRange()(com o nomegetOffsetRangeAreasnoRangeAreasobjeto) getSpecialCells()getSpecialCellsOrNullObject()getTables()-
getUsedRange()(com o nomegetUsedRangeAreasnoRangeAreasobjeto) -
getUsedRangeOrNullObject()(com o nomegetUsedRangeAreasOrNullObjectnoRangeAreasobjeto) load()set()setDirty()toJSON()track()untrack()
Métodos e propriedades específicos do RangeArea
O tipo RangeAreas tem alguns métodos e propriedades que não estão no objeto Range. Segue-se uma seleção das mesmas.
-
areas: O objetoRangeCollectionque contém todos os intervalos representados pelo objetoRangeAreas. O objetoRangeCollectiontambém é novidade e é semelhante a outros objetos do conjunto do Excel. É uma propriedadeitemsque é uma matriz de objetosRangeque representam os intervalos. -
areaCount: O número total de intervalos emRangeAreas. -
getOffsetRangeAreas: Funciona como Range.getOffsetRange, exceto pelo fato de que oRangeAreasé retornado e contém os intervalos que são todos os deslocamentos de um dos intervalos doRangeAreasoriginal.
Criar RangeAreas
Pode criar um RangeAreas objeto de várias formas. A lista seguinte inclui alguns exemplos.
- Ligue
Worksheet.getRanges()e encaminhe-o em uma cadeia de caracteres com endereços de intervalo separado por vírgula. Se algum intervalo que você deseja incluir tiver sido feito em um NamedItem, você poderá incluir o nome, em vez do endereço, cadeia de caracteres. - Chame
Range.getSpecialCells()e devolva umRangeAreasobjeto com células de um tipo específico, como células que contenham fórmulas, validação de dados ou formatação condicional. - Chamar
Workbook.getSelectedRanges(). Esse método retornará umRangeAreasrepresentando todos os intervalos selecionados na planilha ativa no momento.
Quando você tiver um objeto RangeAreas, você pode criar outros usando os métodos de objeto que retornam RangeAreas como getOffsetRangeAreas e getIntersection.
Observação
É possível adicionar diretamente intervalos adicionais para um objeto RangeAreas. Por exemplo, o conjunto RangeAreas.areas não tem um métodoadd.
Aviso
Não tente adicionar ou eliminar diretamente membros da RangeAreas.areas.items matriz. Isso levará a um comportamento indesejável no seu código. Por exemplo, é possível enviar um objeto adicional Range para a matriz, mas isso causará erros porque as propriedades e métodos RangeAreas se comportam como se o novo item não estivesse ali. Por exemplo, a propriedade areaCount não inclui intervalos transferidos dessa maneira e o RangeAreas.getItemAt(index) gera um erro se index for maior que areasCount-1. Da mesma forma, excluir um objeto Range na matriz RangeAreas.areas.items obtendo uma referência a ele e chamando seu método Range.delete causa bugs: embora o Rangeobjeto seja excluído, as propriedades e métodos do objeto pai RangeAreas se comportam ou tentam se comportar, como se ele ainda existisse. Por exemplo, se o seu código chamar RangeAreas.calculate, o Office tentará calcular o intervalo, mas haverá erro porque o objeto de intervalo desapareceu.
Definir as propriedades em vários intervalos
Definir uma propriedade em um RangeAreas objeto define a propriedade correspondente em todos os intervalos no conjunto RangeAreas.areas.
A seguir, um exemplo de configuração de uma propriedade em vários intervalos. A função realça os intervalos F3:F5 e H3:H5.
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();
});
Este exemplo se aplica a cenários nos quais você pode codificar os endereços de intervalo para os quais você passa para getRanges ou facilmente calculá-los no tempo de execução. Alguns dos cenários em que isso pode ser verdadeiro incluem:
- O código é executado no contexto de um modelo conhecido.
- O código é executado no contexto de dados importados, em que o esquema dos dados é conhecido.
Combinar RangeAreas com getSpecialCells
Filtre para RangeAreas baixo apenas para as células que correspondem a um critério, como fórmulas, antes de aplicar formatação ou validação.
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();
});
Obter células especiais de vários intervalos
As getSpecialCells e getSpecialCellsOrNullObject métodos no RangeAreas objeto funciona analogamente para métodos de mesmo nome no Range objeto. Esses métodos retornam as células com característica especificada de todos os intervalos no RangeAreas.areas conjunto. Para obter mais detalhes sobre células especiais, consulte Localizar células especiais dentro de um intervalo.
Ao chamar as getSpecialCells ou getSpecialCellsOrNullObject método em um RangeAreas objeto:
- Se você passar
Excel.SpecialCellType.sameConditionalFormatcomo o primeiro parâmetro, o método retorna todas as células com a mesma formatação condicional que a célula superior esquerda do primeiro intervalo noRangeAreas.areasconjunto. - Se você passar
Excel.SpecialCellType.sameDataValidationcomo o primeiro parâmetro, o método retorna todas as células com a regra de validação de dados que a célula superior esquerda do primeiro intervalo noRangeAreas.areasconjunto.
Ler propriedades de RangeAreas
A leitura de valores de propriedade RangeAreas requer cuidados, porque uma determinada propriedade pode ter valores diferentes para intervalos diferentes dentro deRangeAreas. A regra geral é que, se um valor consistente puder ser retornado, ele será retornado. Por exemplo, no código seguinte, o código RGB para cor-de-rosa (#FFC0CB) e true será registado na consola porque ambos os intervalos no RangeAreas objeto têm um preenchimento cor-de-rosa e ambos são colunas inteiras.
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
});
Uma vez que os valores de propriedade podem ser diferentes, tenha estas regras simples em mente.
- As propriedades
truebooleanas são apenas se forem verdadeiras em todos os intervalos, caso contrário, sãofalse. -
addressdevolve sempre a cadeia de endereços delimitados por vírgulas. - Outras propriedades são,
nulla menos que todos os intervalos partilhem o mesmo valor.
Por exemplo, o código a seguir cria um RangeAreas no qual apenas um intervalo é uma coluna inteira e apenas um é preenchido com rosa. O console mostrará null para a cor de preenchimento false para a propriedade isEntireRow e "Planilha1! F3:F5, Planilha1! H:H"(supondo que o nome da planilha seja "Planilha1") para a propriedadeaddress.
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"
});