Vba 从LibreOffice Calc中的单元格名称获取行和列索引

Vba 从LibreOffice Calc中的单元格名称获取行和列索引,vba,row,libreoffice-calc,Vba,Row,Libreoffice Calc,我有一个单元格名作为变量中的值。 示例:myCellName=“C9” 我需要一个单独变量中该单元格的行和列索引。 例如: rowIndex=myCellName.getRow()3 columnIndex=myCellName.getColumn()9 首先:在你的问题中,你弄乱了行和列C9是第三列的列C和第九行的行9 第二:对于Liberoffice和Openoffice,列和行号基于0。第三列是第2列,第九行是第8行 要从单元格名称中获取列号和行号,可以使用getcellRangeByN

我有一个单元格名作为变量中的值。 示例:
myCellName=“C9”

我需要一个单独变量中该单元格的行和列索引。 例如:

  • rowIndex=
    myCellName.getRow()
    3
  • columnIndex=
    myCellName.getColumn()
    9

首先:在你的问题中,你弄乱了行和列
C9
是第三列的列
C
和第九行的行
9

第二:对于Liberoffice和Openoffice,列和行号基于0。第三列是第2列,第九行是第8行

要从单元格名称中获取列号和行号,可以使用
getcellRangeByName
,请参阅,然后使用
getCellAddress
从该
Range
对象中获取
CellAddress
,请参阅

示例:

首先,我们使用现有的Calc文档和现有的工作表

Sub Test1

 myCellName = "C9"

 oRange = ThisComponent.Sheets(0).getCellRangeByName(myCellName)

 oCellAddress = oRange.getCellAddress()

 msgbox oCellAddress.Row '8
 msgbox oCellAddress.Column '2

End Sub
可能我们没有一个包含现有工作表的现有计算文档,那么我们可以先创建一些:

Sub Test2

 myCellName = "C9"

 oDoc = CreateUnoService("com.sun.star.sheet.SpreadsheetDocument")
 oSheet = oDoc.createInstance("com.sun.star.sheet.Spreadsheet")
 oDoc.Sheets.insertByName("MySheet", oSheet)

 oRange = oSheet.getCellRangeByName(myCellName)

 oCellAddress = oRange.getCellAddress()

 msgbox oCellAddress.Row '8
 msgbox oCellAddress.Column '2

 oCellAddress = Nothing
 oRange = Nothing
 oSheet = Nothing
 oDoc = Nothing

End Sub