主要内容

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

使用多个 MATLAB 函数创建宏

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

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

MATLAB 中创建加载项

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

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

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

  2. 检查 myplotmyprimesmysum 函数。

    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.xlsMicrosoft Excel 电子表格 matlabroot\toolbox\matlabxl\examples\xlmulti 通过多种方式演示了这些函数。

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

另请参阅

主题