使用多个 MATLAB 函数创建宏
此示例向您说明如何使用具有可变长度输入和输出的函数创建宏。
开始之前,请验证您是否已满足所有 MATLAB® Compiler™ Excel® 目标要求。有关详细信息,请参阅MATLAB Compiler 的 Excel 目标要求和限制。
在 MATLAB 中创建加载项
将 MATLAB 附带的
xlmulti示例文件夹复制到您的工作文件夹:copyfile(fullfile(matlabroot,'toolbox','matlabxl','examples','xlmulti'),'xlmulti')
在 MATLAB 命令提示符下,导航到工作文件夹中的
xlmulti文件夹。检查
myplot、myprimes和mysum函数。myplot接受一个整数输入并绘制一条从 1 到该数字的线。function myplot(x) plot(1:x)myprimes接受一个整数输入n并返回所有小于或等于n的质数。function p = primes(n) if length(n)~=1, error('N must be a scalar'); end if n < 2, p = zeros(1,0); return, end p = 1:2:n; q = length(p); p(1) = 2; for k = 3:2:sqrt(n) if p((k+1)/2) p(((k*k+1)/2):k:q) = 0; end end p = p(p>0);
mysum接受integer类型的varargin的输入,将所有数字相加,并返回结果。function y = mysum(varargin) y = sum([varargin{:}])使用以下信息,通过 Excel 加载项编译器或
compiler.build.excelAddIn构建 Excel 加载项:字段 值 库名称 xlmulti类名 xlmulticlass要编译的文件 myplot.m
myprimes.m
mysum.m例如,如果您使用的是
compiler.build.excelAddIn,请输入:buildResults = compiler.build.excelAddIn(["myplot.m","myprimes.m","mysum.m"], ... 'AddInName','xlmulti', ... 'ClassName','xlmulticlass', ... 'GenerateVisualBasicFile','on');
有关详细信息,请参阅从 MATLAB 创建 Excel 加载项中的说明。
使用 Function Wizard 创建 Excel 宏
在系统上启动 Microsoft® Excel 并创建一个新的电子表格。
如果您还没有这样做,请安装并启动随 MATLAB Compiler 一起提供的 Function Wizard 加载项。有关说明,请参阅安装 Function Wizard。
添加 myplot 函数
在 Function Wizard 控制面板中,点击设置函数区域中的添加函数。此时将打开 MATLAB 的“组件”对话框。
在 MATLAB 的“组件”对话框的“可用组件”区域中,从下拉框中选择 xlmulti 1.0。
从标有 Functions for Class xlmulticlass 的框中选择函数 myplot。
点击 Add。此时将打开“函数属性”对话框。
在输入选项卡上,点击设置输入数据。此时将打开
x的“输入数据”对话框。选择值并输入值
4。点击确定。点击完成。如果您此时执行宏,函数
myplot会在 MATLAB 图窗窗口中绘制一条从 1 到 4 的线。此图形的操作方式与用户在 MATLAB 中操作图窗的方式相同。某些功能(例如更改线型或颜色)不可用。
添加 mysum 函数
在单元格 A1 中输入
1。选择单元格 B1:J1。输入公式
= A1 + 1,然后按 CTRL + Enter 将该公式应用于选定的单元格。此过程将使用以 1 为增量的区间 1-10 填充范围 B1:J1。
在 Function Wizard 控制面板上,点击添加函数,然后从 xlmulti1.0 组件添加函数 mysum。
在输入选项卡上,点击添加,然后点击设置输入数据。将打开 Input Data for varargin[1]对话框。
点击 Range 字段末尾的按钮,然后选择工作表中的单元格范围 A1:J1。在文本框中输入范围
Sheet1!$A$1:$J$1。选择 Auto recalculate on change 以允许 Excel 在输入单元格发生变化时动态更新总和。
点击确定。输入参量
varargin[1] = Sheet1!$A$1:$J$1被添加到选择输入范围/值区域。(可选)您可以添加其他单元格区域或值作为输入参量。单元格区域不需要大小相同,并且选定的单元格不需要值。
在 Outputs 选项卡上,点击 Set Output Data 并在范围字段中选择单元格 A2。
点击完成。函数
mysum被添加到具有指定输入和输出参量的活动函数列表中。宏运行后,单元格 A2 将显示总和 55。更改输入范围内的任何单元格都会自动更新输出单元格。
添加 myprimes 函数
在单元格 A4 中输入
10。在 Function Wizard 控制面板上,点击 Add Function,然后从 xlmulti 1.0 组件添加函数 myprimes。
在 Inputs 选项卡上,点击 Set Input Data 并选择范围字段中的单元格 A4。
选择 Auto recalculate on change 以允许 Excel 在输入单元格发生变化时动态更新。
点击确定。输入参量
n = Sheet1!$A$4被添加到选择输入范围/值区域。在 Outputs 选项卡上,点击 Set Output Data 并选择范围字段中的单元格 B4。
确保选中 Auto Resize 以使输出能够填充相邻单元格。
点击完成。函数
myprimes已添加到活动函数列表中。宏运行后,第 4 行的单元格将显示所有小于 A4 中值的质数。更改此单元格会自动更新输出。
创建并运行宏
在 Create Macros 区域的宏名称字段中输入宏的名称。
使用 Store Macro In 字段中的下拉菜单选择存储宏的位置。
(可选)为您的宏添加描述。
点击 Create Macro 将宏保存在选定的工作簿中。
Function Wizard 生成使用指定参量调用函数的 VBA 代码。
要执行宏,请在 Excel 主窗口中按 Alt + F8 打开 Macro 对话框,或者在 Developer 选项卡中选择 Macros。
(可选)检查 Microsoft Visual Basic 代码
在 Developer 选项卡中,点击 Visual Basic,或按 ALT + F11 打开 Visual Basic Editor。在旧版本的 Excel 中,它可能位于 Tools > Macro > Visual Basic Editor 下。
在 Project - VBAProject 窗口中,双击展开
VBAProject (Book1)。展开
Modules文件夹并双击matlabMacros模块。这将打开包含该工程代码的 VB 代码窗口。您可以使用此代码来开发您自己的自定义 VBA 宏。
有关其他示例
位于 xlmulti.xls 的 Microsoft Excel 电子表格 通过多种方式演示了这些函数。 matlabroot\toolbox\matlabxl\examples\xlmulti

在此示例中,使用自定义函数语法在工作表中直接调用 myplot 和 mysum 函数。宏 myprimes 执行 myprimes 函数并动态调整输出大小。