LibreOffice 宏总是显示#NULL!重新打开文件后

2023-12-28

我在 LibreOffice Calc 中编写了一个宏,它能够正确运行。但如果我关闭文件并重新打开,它总是显示#NULL!而不是正确的值。我在这里缺少什么?

我的宏代码

Rem Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
Function Calculate(CalType As String) As Double
'
' Calculate Macro
'

Dim i As Integer
Calc = 0

i = 1

Do While Not IsEmpty(Cells(i, 2))
    If (Cells(i, 3).Value = CalType And (Cells(i,2) = "A" Or Cells(i,2) = "B")) Then
        Calculate = Calculate + Cells(i, 4).Value
    ElseIf (Cells(i, 3).Value = CalType And Cells(i,2) = "C") Then
        Calculate = Calculate - Cells(i, 4).Value
    End If
    i = i + 1
Loop

'
End Function

调用函数将类似于=Calculate(J6)

文件另存为.ods format.


The Cells电话对我来说根本不起作用。它来自 VBA,而不是 LO Basic。但我认为这不是主要问题。

LibreOffice 期望用户定义的函数很简单,仅访问包含公式的单元格。由于调用该函数时电子表格尚未完全加载,因此无法读取其他单元格。

解决方法是忽略错误并等到文档完全加载后再运行该函数。以下面的代码为例:

Function ReadOtherCell(row, col)
    On Error GoTo ErrorHandler
    oSheet = ThisComponent.CurrentController.ActiveSheet()
    oCell = oSheet.getCellByPosition(row, col)
    ReadOtherCell = "value is '" & oCell.getString() & "'"
    Exit Function
    ErrorHandler:
        Reset
End Function

Sub RecalculateAll
    ' This is for user-defined functions that need to read the spreadsheet.
    ' Assign it to the "View created" event,
    ' because before that, the spreadsheet is not fully loaded.
    ThisComponent.calculateAll
End Sub

Enter foo在 A1 中,以及=ReadOtherCell(0,0)在A2中。到目前为止,这有同样的问题——第一次打开文档时会失败。

现在,前往Tools -> Customize。在“事件”选项卡中,突出显示View created。按Macro...并找到RecalculateAll功能。然后按确定。

现在,当文档关闭并重新打开时,单元格 A2 应该显示结果value is 'foo'.

这源自 B. Marcelly 的回答.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LibreOffice 宏总是显示#NULL!重新打开文件后 的相关文章

  • 奇怪的宏定义问题

    我想在编译时根据另一个宏的值定义一个宏 但是这段代码没有按预期执行 include
  • F# 中的非类型化/类型化代码引用与宏卫生之间是否存在关系?

    我想知道 F 中的非类型 类型代码引用与宏系统的卫生之间是否存在关系 他们是否用各自的语言解决相同的问题 或者它们是不同的关注点 元编程方面是唯一的相似之处 即使在这方面 也存在很大的差异 您可以将宏的转换器视为从语法到语法的函数 就像您可
  • 宏和函数同名

    我有以下代码 define myfunc a b myfunc do a a do b b void myfunc int a int b do blah a b int main int x 6 y 7 myfunc x y return
  • 宏中参数的意外多重评估

    为什么第二个 printf 的输出是 max of 50 and 67 is 62 为什么 50 和 62 的最大值不是 57 define MAX a b a gt b a b int incr static int i 42 i 5 r
  • 在 Swift 中创建“forCount”控制结构

    在许多项目中 这种控制结构非常适合可读性 forCount 40 this block is run 40 times 你可以做正是如此 https stackoverflow com a 4844280 294884在 Objective
  • 如何在Scala3中编译并在运行时执行scala代码?

    我想使用 Scala3 编译并执行在运行时以字符串形式给出的 Scala 代码 例如在 Scala 2 中我会使用 Reflection import scala reflect runtime universe as ru import
  • Ubuntu Linux 中从剪贴板复制 R

    我想从 Ubuntu Linux 剪贴板复制到 R Studio 中 我的工作流程包括在 R Studio 和 LibreOffice Calc 之间来回移动 我找到了以下用于写入 Linux X11 剪贴板的代码 但我不知道如何读取它 写
  • 这在 imacros javascript 中可能吗?尝试了很多方法都没有成功

    我已经处理了所有事情 但不幸的是它返回了 未定义 的数据 我尝试了许多不同的方法来从该网站获取数据 不成功 我在其他论坛上发布了这个问题 没有人能够解决这个问题来处理完整的数据提取 我需要像这样保存数据 91 228 53 28 8089
  • ^ 和 _ 宏之后出现的数字(是:LaTeX 限制?)

    我在 LaTeX 中遇到了一个恼人的问题 我有一个大约 1000 行的 tex 文件 我已经有了一些数字 但是当我尝试添加另一个数字时 它会吐出 Undefined control sequence
  • 使用 ## 和 __LINE__ 创建 C 宏(与定位宏的标记串联)

    我想创建一个 C 宏来创建一个基于名称的函数 在行号上 我想我可以做类似的事情 真正的函数在大括号内有语句 define UNIQUE static void Unique LINE void 我希望能扩展到类似的内容 static voi
  • 如何驯服 Windows 标头(有用的定义)?

    在其中一个答案中this https stackoverflow com questions 1394132 macro and member function conflict问题jalf https stackoverflow com
  • LibreOffice 并行将 .docx 转换为 .pdf 效果不佳

    我有很多 docx 文件需要转换为 pdf 将它们一一转换需要很长时间 所以我编写了一个 python 脚本来并行转换它们 from subprocess import Popen import time import os os chdi
  • Clojure 宏expand

    Why does macroexpand arm getHand getFinger 扩展到 arm getHand getFinger while macroexpand gt arm getHand getFinger 扩展到 getF
  • 如何编写 Clojure 宏来从字符串创建正则表达式?

    我正在创建一个方便的宏 部分便利在于可以仅使用字符串来指定正则表达式 而不是使用 re 表示法 我无法弄清楚的一部分是如何让宏获取字符串并将其重写为 Clojure 正则表达式 例如 生成 re 符号 我认为这是一个语法 转义问题 我的第一
  • 是否可以在 C 中自动生成的变量名中使用 __LINE__ ?

    为了避免重复 我想使用 LINE 在自动生成的变量名称中 define ROUTE path impl char k impl LINE route path impl 但它始终被视为普通字符串 LINE 即使我将其定义如下 我也无法得到我
  • 避免函数内装箱/拆箱

    对于数字密集型代码 我编写了一个具有以下签名的函数 def update f Int Int Double gt Double Unit 然而 因为Function3不是专门的 每个应用程序f结果对 3 个参数和结果类型进行装箱 拆箱 我可
  • 用于将具有相同前缀的所有变量的值相加的 SPSS 语法

    我想知道是否有一种方法可以让 SPSS 将具有相同前缀的所有变量相加 例如 我有名为MFQAP 1 MFQAP 2 MFQAP 3等等 有没有办法告诉SPSS将所有以以下开头的变量相加MFQAP 我知道我可以告诉 SPSS 将所有变量相加M
  • 使用 __LINE__ 获取代码行

    我尝试使用以下方法打印当前代码的行号 include
  • CV_MAT_ELEM 中的编译错误

    调用estimateRigidTransform 的结果是我得到一个名为 trans 的cv Mat 对象 为了检索其包含的矩阵 我尝试以这种方式访问 其元素 for i 0 i lt 2 i for j 0 j lt 3 j mtx j
  • Julia 中基准和时间宏的区别

    我最近发现两个宏之间存在巨大差异 benchmark 和 time 在内存分配信息和时间方面 例如 benchmark quadgk x gt x 0 1 BenchmarkTools Trial memory estimate 560 b

随机推荐

  • 如何通过 CloudBees Jenkins“立即部署”功能部署非 Web Java 应用程序?

    CloudBees 现在支持 Java 应用程序的部署 是否可以使用 Jenkins 中的 部署到 CloudBees 中的构建后操作来部署您的应用程序 此外 我想使用 Maven程序集插件的 jar with dependations h
  • Google Data studio 中的 COUNTIFS 函数

    我有两列 分别称为大陆和完成度 我想根据以下数据计算每个大陆的完成百分比 这是在 Excel 中使用 COUNTIFS 函数定义的 我们可以在数据工作室中实现这一目标吗 完成百分比公式为 已关闭 状态总数 状态总数 状态值为 开放 进行中
  • 迭代时从映射中删除键/值

    我正在创建这样的地图 def myMap 映射基本上是一个键的对象和一个值的整数 当我迭代地图时 我会计算该值 如果它是 0 我会将其删除 我已经尝试过了myMap remove 但我得到了ConcurrentModificationErr
  • 未知文件类型 MIME?

    如果上传的文件没有扩展名 是否必须指定 MIME 类型 换句话说 是否有默认的通用 MIME 类型 您可以使用application octet stream对于未知类型 RFC 2046 http www rfc editor org r
  • 如何忽略带有特定注释的方法的 checkstyle javadoc 警告

    当我有一个没有 javadoc 的公共方法时 Checkstyle 会发出警告 这很好 当我重写公共方法时 我没有收到警告 因为 javadoc 已在该方法的父类中可用 例如 现在我的方法有另一个注释 MyEvent 现在我确实收到了警告
  • 根据两个数字之间的差异多次插入图像。 PHP

    编写一个脚本 计算从 API 检索到的日期之间的差异 我希望它在图像中放入与差异一样多的次数 d1 new DateTime 2012 04 04 d2 new DateTime 2012 03 31 interval d1 gt diff
  • 为什么 null 需要在这里进行显式类型转换? [复制]

    这个问题在这里已经有答案了 以下代码无法编译 int a int b int a 0 a null 为了编译 需要改为 int b a 0 a int null 既然两者b null and b a是合法的 这对我来说没有意义 为什么我们必
  • 在运行剩余的 javascript 之前检查有效的电子邮件

    我有一个文本框 要求用户在其中插入有效的电子邮件地址 当用户提交有效的电子邮件地址时 会在回发数据时出现加载图形 下面的代码可以很好地显示加载图形 但它不会首先检查电子邮件地址是否有效 有人可以帮忙吗 btnEmail1Submit liv
  • Ansible 查找模块不排除搜索中的文件夹

    这是我尝试找到的剧本test juli jar under app但是 我希望排除目录 app Patchbackup从搜索到的文件夹 以下是我的剧本 tasks name Find test home directories under
  • 实体框架查询很慢,但 SqlQuery 中的相同 SQL 很快

    我看到一些非常奇怪的性能 与使用 Entity Framework Code First 和 NET Framework 版本 4 的非常简单的查询相关 LINQ2Entities 查询如下所示 context MyTables Where
  • 在 Bison 中为 && 和 || 启动短路规则运营

    我正在使用 C C 在 Bison 和 Flex 中编写一个简单的计算器 逻辑在 Bison 中完成 C C 部分负责数据结构 例如 STL 等 我有以下问题 在我的计算器中美元符号 表示 i 和 i 前缀和后缀 例如 int y 3 gt
  • 导出 libGDX 小程序时 AppletLoader 的 ClassNotFound

    我尝试以下this http www thesecretpie com 2011 05 being like minecraft or how to run your html将我的 libGDX 游戏导出为 Java 小程序 该指南有点令
  • 用于手机号码验证的正则表达式

    我想要一个用于手机号码验证的正则表达式 正则表达式模式应该是这样的 它必须接受 仅在开头和空格 或 只应允许在国家 地区代码之后 仅一次 国家 地区代码后只能允许使用 10 位数字 国家 地区代码应该是可选的 如果国家代码不存在 则仅接受
  • 放大和有角度的安全关注 - Cognito

    我试图弄清楚 Cognito 是否需要放大才能与前端一起使用 或者是否有更安全的设置方法 我问的原因是因为我有一个解决方案 允许我使用 cognito amplify 和 Angular 登录我的应用程序 但为了使其正常工作 我必须将 us
  • 如何在android中以编程方式授予“绘制其他应用程序”权限?

    我如何以编程方式授予权限Settings gt Apps gt Draw over other apps在安卓中 我想使用系统警报窗口 但无法在 Android Marshmallow 中使用 除非强制用户先通过 设置 应用程序并授予权限
  • Google Guava isNullOrEmpty 对于集合

    我看到 Guava 有 isNullOrEmpty 字符串实用方法 Strings isNullOrEmpty str 我们有类似的列表吗 就像是 Lists isNullOrEmpty list 这应该相当于 list null list
  • 使用python glob查找一个14位数字的文件夹

    我有一个文件夹 其中的子文件夹全部采用 YYYYMMDDHHMMSS 时间戳 模式 我想使用 glob 仅选择与该模式匹配的文件夹 Since glob http docs python org library glob html不支持正则
  • 为什么 UIProgressview 进度条不能调整大小?

    来自巴伐利亚的问题UIProgressViews 在这里 https stackoverflow com questions 7980891 uiprogressview and custom track and progress imag
  • 在控制台中测试路由

    我必须做什么才能在控制台中工作 假设song显然已定义 edit song id gt song id 您可以访问app您可以使用它来测试路由的对象 gt gt app root url gt http www example com gt
  • LibreOffice 宏总是显示#NULL!重新打开文件后

    我在 LibreOffice Calc 中编写了一个宏 它能够正确运行 但如果我关闭文件并重新打开 它总是显示 NULL 而不是正确的值 我在这里缺少什么 我的宏代码 Rem Attribute VBA ModuleType VBAModu