当前位置: 首页 > 知识库问答 >
问题:

如何使vba代码与libre office兼容

连俊智
2023-03-14
Option VBASupport 
Sub DeleteToLeft()
    Selection.SpecialCells(xlBlanks).Delete shift:=xlToLeft
End Sub
Function SinceLastWash()
    Application.Volatile
    WashCount = 0
    WearCount = 0
    CurrentRow = Application.ThisCell.Row
    For i = 3 To 35
        If Range(Cells(CurrentRow, i), Cells(CurrentRow, i)).Value = "a" Then
            WearCount = WearCount + 1
        End If
        If Range(Cells(CurrentRow, i), Cells(CurrentRow, i)).Value = "q" Then
            WashCount = WashCount + 1
            WearCount = 0
        End If
    Next i
    SinceLastWash = WearCount
End Function
Function testhis()
testhis = Application.ThisCell.Row
End Function

共有1个答案

沃盛
2023-03-14

您必须转换操作文档的部分才能使用UNO API。遗憾的是,这可能会很棘手,这取决于宏的操作。基本语句直接工作。修改文档通常不会。

Range(Cells(CurrentRow, i), Cells(CurrentRow, i)).Value = "a"

Cells命令返回基于行和列的特定单元格。因此,您需要当前行。这里有一些疯狂的获得活跃的细胞:

Sub RetrieveTheActiveCell()
  Dim oOldSelection 'The original selection of cell ranges
  Dim oRanges       'A blank range created by the document
  Dim oActiveCell   'The current active cell
  Dim oConv         'The cell address conversion service
  Dim oDoc
  oDoc = ThisComponent

  REM store the current selection
  oOldSelection = oDoc.CurrentSelection

  REM Create an empty SheetCellRanges service and then select it.
  REM This leaves ONLY the active cell selected.
  oRanges = oDoc.createInstance("com.sun.star.sheet.SheetCellRanges")
  oDoc.CurrentController.Select(oRanges)

  REM Get the active cell!
  oActiveCell = oDoc.CurrentSelection

  oConv = oDoc.createInstance("com.sun.star.table.CellAddressConversion")
  oConv.Address = oActiveCell.getCellAddress
  Print oConv.UserInterfaceRepresentation
  print oConv.PersistentRepresentation

  REM Restore the old selection, but lose the previously active cell
  oDoc.CurrentController.Select(oOldSelection)
End Sub

当您拥有活动单元格时,您将获得单元格地址,并由此获得行。您根本不需要使用范围,因为您只关心单个单元格,因此,您获得活动工作表,然后从工作表中获得特定单元格。

Selection.SpecialCells(xlBlanks).Delete shift:=xlToLeft
 类似资料:
  • 问题内容: 我有以下类,它具有迭代数组项的方法: 但是我收到来自编译器的警告消息,在Swift 3中将弃用++ 我应该如何重写我的代码以让方法在当前位置返回数组项并在此之后递增位置? 添加多行的标准建议不适合此处,因为我在评估时正完全退出示波器 问题答案: 在计算返回值 之后 ,可用于递增变量 : __

  • 我们计划将AEM版本从6.4迁移到6.5。我们如何确保当前的代码库(基于AEM 6.4构建)与AEM 6.5兼容? 模式检测器能帮上忙吗?我们是否有其他方法来确定AEM 6.4代码是否与AEM 6.5兼容

  • 问题内容: 我需要根据通过Java从数据库中获取的数据生成Excel工作表。为此,我需要在生成Excel时调用一些VBA宏函数。有人可以帮助我如何从Java代码调用VBA宏吗? 问题答案: 我不太了解您从数据库中的数据生成Excel工作表的总体方法。通常,我会使用Vivek提出的Apache POI。 但是,如果您确实需要在工作表中调用Excel宏,则需要做两件事: 首先,您需要一个JAVA-CO

  • 我想对包含来自另一个代码VBA的消息框的行进行注释。我正在用库VBA扩展性尝试这一点,但我没有找到解决方案。 欢迎任何帮助。 这是我的代码:

  • 本文向大家介绍使用VBA宏调用ABAP代码,包括了使用VBA宏调用ABAP代码的使用技巧和注意事项,需要的朋友参考一下 请尝试使用以下脚本-

  • 问题内容: 我一直在切换到拉曼SQL棒球数据库的脱机版本时遇到问题。我正在使用嵌入到EDX课程中的终端。此命令在Web终端上运行良好: 它正在运行SQL 5.5.46,但是当我使用运行5.7.10的脱机版本时,出现以下错误代码: 错误代码:1055。SELECT列表的表达式#1不在GROUP BY子句中,并且包含未聚合的列’stats.m.nameFirst’,该列在功能上不依赖于GROUP BY