header detail 1
header detail 2
世界杯热身赛_世界杯赛程 - toption-intl.com
世界杯热身赛_世界杯赛程 - toption-intl.com

24、自定义 Excel 工作表函数与加载项创建指南

Home 2025-11-30 13:02:18 24、自定义 Excel 工作表函数与加载项创建指南
世界杯德国瑞士

自定义 Excel 工作表函数与加载项创建指南

在 Excel 的使用中,自定义工作表函数和创建加载项能够极大地扩展其功能,满足特定的工作需求。下面将详细介绍相关内容。

自定义工作表函数

数组相关函数

LBound 和 UBound 函数

:用于确定数组的起始和结束元素。数组的起始元素通常为 0,除非另行声明或在模块开头使用

Option Base 1

语句。

ParamArray

:只能应用于过程中的最后一个参数,它始终是

Variant

数据类型,并且是可选参数(无需使用

Optional

关键字)。

返回数组的函数

返回月份名称数组

:以下是

MonthNames

函数的代码,它返回一个包含 12 个月份名称的数组。

Function MonthNames()

MonthNames = Array("January", "February", "March", _

"April", "May", "June", "July", "August", _

"September", "October", "November", "December")

End Function

使用方法:在工作表中,选择 12 个单元格的范围(如 A1:L1),输入 `=MonthNames()`,然后使用 `Ctrl + Shift + Enter` 输入数组公式。如果要将月份名称显示在列中,可选择一列中的 12 个单元格,使用 `=TRANSPOSE(MonthNames())` 并按 `Ctrl + Shift + Enter`。

- **返回排序后的列表**:`Sorted` 函数接受单列单元格范围作为参数,并返回排序后的数组。

Function Sorted(Rng As Range)

Dim SortedData() As Variant

Dim Cell As Range

Dim Temp As Variant, i As Long, j As Long

Dim NonEmpty As Long

' Transfer data to SortedData

For Each Cell In Rng

If Not IsEmpty(Cell) Then

NonEmpty = NonEmpty + 1

ReDim Preserve SortedData(1 To NonEmpty)

SortedData(NonEmpty) = Cell.Value

End If

Next Cell

' Sort the array

For i = 1 To NonEmpty

For j = i + 1 To NonEmpty

If SortedData(i) > SortedData(j) Then

Temp = SortedData(j)

SortedData(j) = SortedData(i)

SortedData(i) = Temp

End If

Next j

Next i

' Transpose the array and return it

Sorted = Application.Transpose(SortedData)

End Function

使用方法:假设 A2:A13 包含一些名称,在 C2:C13 中输入 `=Sorted(A2:A13)`,并按 `Ctrl + Shift + Enter`。如果未排序的数据在一行中,可使用 `=TRANSPOSE(Sorted(A16:L16))` 水平显示排序后的数据。

使用插入函数对话框

自定义函数显示

:自定义工作表函数会出现在“插入函数”对话框的“用户定义”类别中。使用

Private

关键字定义的函数过程不会出现在该对话框中。

显示函数描述

:要在“插入函数”对话框中显示自定义函数的有意义描述,可按以下步骤操作:

激活包含自定义函数的工作簿中的工作表。

选择“开发工具”➪“代码”➪“宏”(或按

Alt + F8

),弹出“宏”对话框。

在“宏名”字段中输入函数的名称。

点击“选项”按钮,弹出“宏选项”对话框。

在“说明”字段中输入函数的描述。

点击“确定”。

点击“取消”。

添加函数到不同类别

:可使用 VBA 将函数添加到不同类别。例如,将

TopAvg

函数添加到“数学与三角函数”类别(类别 #3)的代码如下:

Application.MacroOptions Macro:="TopAvg", Category:=3

- **参数描述**:在 Excel 2010 中,可使用 `MacroOptions` 方法为自定义函数指定参数描述。以下是为 `TopAvg` 函数添加参数描述的示例:

Sub AddArgumentDescriptions()

Application.MacroOptions Macro:="TopAvg", _

ArgumentDescriptions:= _

Array("Range that contains the values", _

"Number of values to average")

End Sub

自定义函数操作步骤流程图

graph LR

A[开始] --> B[创建自定义函数]

B --> C{函数是否返回数组}

C -- 是 --> D[编写返回数组的函数代码]

C -- 否 --> E[编写普通函数代码]

D --> F[在工作表中使用数组公式输入函数]

E --> G[在工作表中输入函数]

F --> H[检查结果]

G --> H

H --> I{是否需要在插入函数对话框显示描述}

I -- 是 --> J[按步骤添加描述]

I -- 否 --> K[结束]

J --> K

自定义函数相关操作总结

操作

说明

返回数组函数

如

MonthNames

和

Sorted

函数,需使用数组公式输入

插入函数对话框显示描述

按特定步骤操作可添加函数描述

函数分类

使用 VBA 可将函数添加到不同类别

参数描述

Excel 2010 可使用

MacroOptions

方法添加

自定义 Excel 工作表函数与加载项创建指南

Excel 加载项概述

Excel 加载项是增强 Excel 功能的工具,有些加载项提供新的工作表函数,有些则提供新命令或实用工具。Excel 自带了一些加载项,如“分析工具库”和“规划求解”,也可以从第三方供应商或共享软件中获取。创建加载项需要具备 VBA 编程技能,它本质上是一种特殊形式的 XLSM 工作簿文件,具有以下特点:

-

Workbook

对象的

IsAddin

属性为

True

。

- 工作簿窗口隐藏,无法通过“视图”➪“窗口”➪“取消隐藏”命令取消隐藏。

- 工作簿不属于

Workbooks

集合,而是属于

AddIns

集合。

加载项通常使用 XLAM 文件扩展名,早期版本的 Excel 创建的加载项使用 XLA 扩展名。

创建加载项的原因

创建加载项有以下好处:

-

保护代码

:将应用程序作为加载项分发并保护其 VBA 项目,可使普通用户难以查看工作簿中的工作表,增加代码被复制的难度,但 Excel 的保护功能并非完美。

-

避免混淆

:加载项对用户不可见,不太可能让新手用户感到困惑或造成干扰,且其内容无法被显示。

-

简化函数访问

:存储在加载项中的自定义工作表函数无需使用工作簿名称限定符。例如,若将自定义函数

MOVAVG

存储在名为

NEWFUNC.XLSM

的工作簿中,在其他工作簿中使用该函数需输入

=NEWFUNC.XLSM!MOVAVG(A1:A50)

;而若该函数存储在加载项中,可直接使用

=MOVAVG(A1:A50)

。

-

方便用户使用

:加载项会显示在“加载项”对话框中,用户可轻松启用或禁用。

-

更好的加载控制

:加载项可在 Excel 启动时自动打开,不受存储目录的限制。

-

避免卸载提示

:关闭加载项时,不会出现询问是否保存文件更改的对话框。

加载和卸载加载项

可以通过以下方法打开“加载项”对话框:

- 选择“文件”➪“选项”➪“加载项”,在对话框底部的下拉列表中选择“Excel 加载项”,然后点击“转到”。

- 在 Excel 2010 中,选择“开发工具”➪“加载项”➪“加载项”。

- 按

Alt + TI

(Excel 2003 的旧键盘快捷键)。

“加载项”对话框列出了 Excel 已知的所有加载项,勾选表示当前已打开的加载项,可通过勾选或取消勾选来打开或关闭加载项。也可以通过“文件”➪“打开”命令打开大多数加载项文件,但以这种方式打开的加载项不会出现在“加载项”对话框中,且不能通过“文件”➪“关闭”关闭,只能通过退出并重新启动 Excel 或编写宏来关闭。

创建加载项的步骤

创建加载项可按以下步骤进行:

1.

开发应用程序

:确保应用程序的所有功能正常运行,若加载项仅包含函数,则无需包含执行方法;若包含宏,可定义快捷键或自定义用户界面。

2.

测试应用程序

:在不同工作簿处于活动状态时执行应用程序,模拟加载项的使用情况。

3.

保护 VBA 项目

:激活 VBE,在“项目”窗口中选择工作簿,选择“工具”➪“VBA 项目属性”,点击“保护”选项卡,选中“锁定项目以供查看”复选框并输入密码(两次),然后点击“确定”。

4.

输入文档属性

:在 Excel 2010 中,选择“开发工具”➪“文档面板”;在 Excel 2007 中,选择“Office”➪“准备”➪“属性”。在“文档属性”窗格的“标题”字段中输入简短的描述性标题,在“注释”字段中输入较长的描述。

5.

保存为加载项

:选择“文件”➪“另存为”,在“另存为”对话框的“保存类型”下拉列表中选择“Excel 加载项 (*.xlam)”,指定存储加载项的文件夹,然后点击“保存”。

加载项创建示例

以“更改大小写”文本转换实用工具为例,介绍创建加载项的过程。

设置工作簿

工作簿包含一个空白工作表、一个 VBA 模块和一个用户窗体。用户窗体在原有的大写、小写和正确大小写选项基础上,增加了“句首字母大写”和“切换大小写”两个选项。

用户窗体包含一个框架控件,其中有五个选项按钮,还有一个“取消”按钮(名为

CancelButton

)和一个“确定”按钮(名为

OKButton

)。

“取消”按钮的点击事件代码如下:

Private Sub CancelButton_Click()

Unload UserForm1

End Sub

“确定”按钮的点击事件代码如下:

Private Sub OKButton_Click()

Dim TextCells As Range

Dim cell As Range

Dim Text As String

Dim i As Long

' Create an object with just text constants

On Error Resume Next

Set TextCells = Selection.SpecialCells(xlConstants, _

xlTextValues)

' Turn off screen updating

Application.ScreenUpdating = False

' Loop through the cells

For Each cell In TextCells

Text = cell.Value

Select Case True

Case OptionLower 'lowercase

cell.Value = LCase(cell.Value)

Case OptionUpper 'UPPERCASE

cell.Value = UCase(cell.Value)

Case OptionProper 'Proper Case

cell.Value = _

WorksheetFunction.Proper(cell.Value)

Case OptionSentence 'Sentence case

Text = UCase(Left(cell.Value, 1))

Text = Text & LCase(Mid(cell.Value, 2,

Len(cell.Value)))

cell.Value = Text

Case OptionToggle 'tOGGLE CASE

For i = 1 To Len(Text)

If Mid(Text, i, 1) Like "[A-Z]" Then

Mid(Text, i, 1) = LCase(Mid(Text, i, 1))

Else

Mid(Text, i, 1) = UCase(Mid(Text, i, 1))

End If

Next i

cell.Value = Text

End Select

Next

' Unload the dialog box

Unload UserForm1

End Sub

测试工作簿

测试工作簿时,应在不同工作簿处于活动状态下进行,以模拟加载项的使用情况:

1. 打开一个新工作簿或现有工作簿,输入各种类型的信息,包括文本、值和公式。

2. 选择一个或多个单元格(或整行和整列)。

3. 通过右键单击单元格(或行或列)的快捷菜单选择“更改大小写”命令来执行宏。若该命令未显示,可能是打开工作簿时未启用宏,需关闭并重新打开工作簿,确保启用宏。

添加描述信息

建议为加载项输入描述信息,步骤如下:

1. 激活

change case.xlsm

工作簿。

2. 在 Excel 2010 中,选择“开发工具”➪“文档面板”;在 Excel 2007 中,选择“Office”➪“准备”➪“属性”。

3. 在“标题”字段中输入加载项的标题,如“更改大小写”。

4. 在“注释”字段中输入描述,如“更改所选单元格中文本的大小写。可通过右键快捷菜单访问此实用工具”。

保护 VBA 代码

若要添加密码以防止他人查看 VBA 代码,可按以下步骤操作:

1. 激活 VBE,在“项目”窗口中选择

change case.xlsm

工作簿。

2. 选择“工具”➪“VBA 项目属性”,点击“保护”选项卡。

3. 选中“锁定项目以供查看”复选框并输入密码(两次)。

4. 点击“确定”。

5. 通过 VBE 的“文件”➪“保存”菜单保存工作簿,或返回 Excel 窗口选择“文件”➪“保存”。

创建加载项

完成上述步骤后,可按以下步骤创建加载项:

1. 若需要,重新激活 Excel。

2. 激活

change case.xlsm

工作簿,选择“文件”➪“另存为”。

3. 在“保存类型”下拉菜单中选择“加载项 (*.xlam)”。

4. 指定位置并点击“保存”。

打开加载项

在打开加载项之前,关闭 XLSM 工作簿以避免混淆,打开加载项的步骤如下:

1. 按

Alt + TI

打开“加载项”对话框。

2. 点击“浏览”按钮。

3. 找到并选择刚刚创建的加载项。

4. 点击“确定”关闭“浏览”对话框。

5. 确保“加载项”对话框中为新加载项勾选了复选框。

6. 点击“确定”关闭对话框。

分发和修改加载项

若要分发加载项,可将 XLAM 文件副本提供给其他 Excel 用户。若需要修改受密码保护的加载项,可按以下步骤操作:

1. 打开 XLAM 文件。

2. 激活 VBE。

3. 在“项目”窗口中双击项目名称,输入密码并点击“确定”。

4. 修改代码。

5. 通过 VBE 的“文件”➪“保存”保存文件。

若加载项将信息存储在工作表中,需将工作簿的

IsAddIn

属性设置为

False

才能查看工作簿,修改完成后,保存文件前将该属性设置回

True

。

加载项操作步骤流程图

graph LR

A[开始] --> B[开发应用程序]

B --> C[测试应用程序]

C --> D{是否保护 VBA 项目}

D -- 是 --> E[设置保护密码]

D -- 否 --> F[跳过保护步骤]

E --> G[输入文档属性]

F --> G

G --> H[保存为加载项]

H --> I[关闭 XLSM 工作簿]

I --> J[打开加载项]

J --> K{是否需要修改加载项}

K -- 是 --> L[解锁并修改代码]

K -- 否 --> M[结束]

L --> M

加载项相关操作总结

操作

说明

创建加载项

按开发、测试、保护、输入属性、保存的步骤进行

打开加载项

通过“加载项”对话框浏览并选择加载项

分发加载项

提供 XLAM 文件副本

修改加载项

解锁 VBA 项目后修改代码,存储信息的加载项需调整

IsAddIn

属性

通过以上介绍,你可以了解如何创建自定义工作表函数和 Excel 加载项,以及它们的使用方法和优势。在实际应用中,可根据具体需求灵活运用这些技术,提高工作效率。

Post navigation

  • Prev Post MATLAB绘制椭圆
Copyright © 2088 世界杯热身赛_世界杯赛程 - toption-intl.com All Rights Reserved.
友情链接