# dotNet.ReoGrid 扩展库 - 命名区域

通过编程定义命名区域
-----------------------------------------------------------------------

要定义命名区域，可以使用 `DefineNamedRange` 方法：

```aardio
// 获取当前工作表
var sheet1 = grid.CurrentWorksheet;
// 定义从 C3 开始到 F3 结束的命名区域，包含 4 列
sheet1.DefineNamedRange("header", "C3:F3");
```

通过指定名称向工作表中设置数据：

```aardio
// 在名为 'header' 的区域设置表头文本
sheet1["header"] = { "姓名", "年龄", "生日", "邮箱" };
```

4列中显示的文本如下所示：

![命名区域](../images/89.png)

也可以通过命名区域实例来设置数据。

```aardio
// 定义一个命名区域
var namedRange = sheet1.DefineNamedRange("items", "B2:E2"); 
// 向命名区域设置值
namedRange.Data = { 1, 3, 5, 7 };
```

在公式中使用名称
-------------------------------------------

要在公式中通过名称引用区域，可以直接使用名称：

```aardio
var range = sheet1.DefineNamedRange("r1", "A1:C2");
range.Data = { 
  {1, 2, 3},  
  {4, 5, 6}
};
sheet1["E2"] = "=SUM(r1)";
```

![139](../images/139.png)

有关公式的更多信息，请参阅[公式](../formula.html)。

移除命名区域定义
------------------------------------------------------------------

要从电子表格中移除命名区域定义，可以使用 `UndefineNamedRange` 方法。

```aardio
sheet1.UndefineNamedRange("myname");
```

自定义名称解析提供程序
-------------------------------------------------------------------

即使未在电子表格中定义，也可以在公式中使用自定义名称：

```aardio
sheet1["F1"] = "=myName1 + myName2";
```

`myName1` 和 `myName2` 并未定义为命名区域，要通过编程提供它们的值，可以使用自定义名称解析提供程序，请参阅[自定义函数](../formula/custom-function.html)。

[插入/删除行列后区域的变化](#插入删除行列后区域的变化)
--------------------------------------------------------------------------------------------------------------------

插入/删除行列会影响命名区域：

*   如果在命名区域前插入行或列，命名区域会自动移动。
*   如果在命名区域内插入行或列，命名区域中的行或列会自动增加。
*   如果在命名区域内删除行或列，命名区域中的行或列也会自动移除。如果命名区域中的所有行或列都被删除，该区域也会自动移除。

目前无法更改上述行为。

事件
-----------------

要在定义任何命名区域时获取事件，使用 `NamedRangeDefined` 事件；要在移除任何命名区域定义时获取事件，使用 `NamedRangeUndefined` 事件。

[在 ReoGridEditor 中定义命名区域](#在-reogrideditor-中定义命名区域)
---------------------------------------------------------------------------

要在 ReoGridEditor 中定义命名区域，选择目标区域，然后选择菜单 公式->定义命名区域。

![179](../images/179.png)

点击"确定"后，名称会显示在地址栏的下拉列表中：

![180](../images/180.png)

选择名称"header"，对应的区域会被选中。

![93](../images/93.png)