主要内容

本页采用了机器翻译。点击此处可查看英文原文。

使用多个 MATLAB 函数创建宏

R2026b

此示例向您说明如何使用具有可变长度输入和输出的函数创建宏。

开始之前,请验证您是否已满足所有 MATLAB® Compiler™ Excel® 目标要求。有关详细信息,请参阅MATLAB Compiler 的 Excel 目标要求和限制。

在 MATLAB 中创建加载项

  1. 将 MATLAB 附带的 xlmulti 示例文件夹复制到您的工作文件夹:

    copyfile(fullfile(matlabroot,'toolbox','matlabxl','examples','xlmulti'),'xlmulti')

    在 MATLAB 命令提示符下,导航到工作文件夹中的 xlmulti 文件夹。

  2. 检查 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{:}])

  3. 使用以下信息,通过 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 函数

  1. 在 Function Wizard 控制面板中,点击设置函数区域中的添加函数。此时将打开 MATLAB 的“组件”对话框。

  2. 在 MATLAB 的“组件”对话框的“可用组件”区域中,从下拉框中选择 xlmulti 1.0。

  3. 从标有 Functions for Class xlmulticlass 的框中选择函数 myplot。

  4. 点击 Add。此时将打开“函数属性”对话框。

  5. 在输入选项卡上,点击设置输入数据。此时将打开 x 的“输入数据”对话框。

  6. 选择值并输入值 4。点击确定。

  7. 点击完成。如果您此时执行宏,函数 myplot 会在 MATLAB 图窗窗口中绘制一条从 1 到 4 的线。此图形的操作方式与用户在 MATLAB 中操作图窗的方式相同。某些功能(例如更改线型或颜色)不可用。

添加 mysum 函数

  1. 在单元格 A1 中输入 1。

  2. 选择单元格 B1:J1。输入公式 = A1 + 1,然后按 CTRL + Enter 将该公式应用于选定的单元格。

    此过程将使用以 1 为增量的区间 1-10 填充范围 B1:J1。

  3. 在 Function Wizard 控制面板上,点击添加函数,然后从 xlmulti1.0 组件添加函数 mysum。

  4. 在输入选项卡上,点击添加,然后点击设置输入数据。将打开 Input Data for varargin[1]对话框。

  5. 点击 Range 字段末尾的按钮,然后选择工作表中的单元格范围 A1:J1。在文本框中输入范围 Sheet1!$A$1:$J$1。

  6. 选择 Auto recalculate on change 以允许 Excel 在输入单元格发生变化时动态更新总和。

  7. 点击确定。输入参量 varargin[1] = Sheet1!$A$1:$J$1 被添加到选择输入范围/值区域。

    (可选)您可以添加其他单元格区域或值作为输入参量。单元格区域不需要大小相同,并且选定的单元格不需要值。

  8. 在 Outputs 选项卡上,点击 Set Output Data 并在范围字段中选择单元格 A2。

  9. 点击完成。函数 mysum 被添加到具有指定输入和输出参量的活动函数列表中。

  10. 宏运行后,单元格 A2 将显示总和 55。更改输入范围内的任何单元格都会自动更新输出单元格。

添加 myprimes 函数

  1. 在单元格 A4 中输入 10。

  2. 在 Function Wizard 控制面板上,点击 Add Function,然后从 xlmulti 1.0 组件添加函数 myprimes。

  3. 在 Inputs 选项卡上,点击 Set Input Data 并选择范围字段中的单元格 A4。

  4. 选择 Auto recalculate on change 以允许 Excel 在输入单元格发生变化时动态更新。

  5. 点击确定。输入参量 n = Sheet1!$A$4 被添加到选择输入范围/值区域。

  6. 在 Outputs 选项卡上,点击 Set Output Data 并选择范围字段中的单元格 B4。

    确保选中 Auto Resize 以使输出能够填充相邻单元格。

  7. 点击完成。函数 myprimes 已添加到活动函数列表中。

  8. 宏运行后,第 4 行的单元格将显示所有小于 A4 中值的质数。更改此单元格会自动更新输出。

创建并运行宏

  1. 在 Create Macros 区域的宏名称字段中输入宏的名称。

  2. 使用 Store Macro In 字段中的下拉菜单选择存储宏的位置。

  3. (可选)为您的宏添加描述。

  4. 点击 Create Macro 将宏保存在选定的工作簿中。

    Function Wizard 生成使用指定参量调用函数的 VBA 代码。

  5. 要执行宏,请在 Excel 主窗口中按 Alt + F8 打开 Macro 对话框,或者在 Developer 选项卡中选择 Macros。

(可选)检查 Microsoft Visual Basic 代码

  1. 在 Developer 选项卡中,点击 Visual Basic,或按 ALT + F11 打开 Visual Basic Editor。在旧版本的 Excel 中,它可能位于 Tools > Macro > Visual Basic Editor 下。

  2. 在 Project - VBAProject 窗口中,双击展开 VBAProject (Book1)。

  3. 展开 Modules 文件夹并双击 matlabMacros 模块。这将打开包含该工程代码的 VB 代码窗口。您可以使用此代码来开发您自己的自定义 VBA 宏。

有关其他示例

位于 xlmulti.xls 的 Microsoft Excel 电子表格 matlabroot\toolbox\matlabxl\examples\xlmulti 通过多种方式演示了这些函数。

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

另请参阅

主题