LibreOffice Calc宏功能访问单元格范围

问题描述

我具有Function accessing cell range中的功能(此处重复):

public function CHECKBZRANGE(vCellRangeValues as variant) as integer

    dim i as integer
    dim vCellValue as variant

    for each vCellValue in vCellRangeValues
        msgbox vCellValue
        i = i + 1
    next

    CHECKBZRANGE = i
end function

曾经在LibreOffice =CHECKBZRANGE(A6:C9)。现在在LibreOffice 7.0.0.3中,我收到此错误消息

Inadmissible value or data type.
Data type mismatch.
[OK]

在线

for each vCellValue in vCellRangeValues

我搜索了此内容,但找不到答案。是这个吗?

  1. LibreOffice VBA的新功能?
  2. 回归?

如何在宏函数中访问range的值?

解决方法

由于vCellRangeValues不是一个单元格范围,而是这些单元格的值数组,因此您应该使用两个嵌套循环来显示每个值-在行和列上:

Function CHECKBZRANGE(vCellRangeValues As Variant) As Integer 
Dim iRow As Long,iColumn As Long 
    For iRow = LBound(vCellRangeValues) To UBound(vCellRangeValues)
        For iColumn = LBound(vCellRangeValues,2) To UBound(vCellRangeValues,2)
            msgbox "Cell (" & iRow & "," & iColumn & ") = " & vCellRangeValues(iRow,iColumn )
        Next iColumn
    Next iRow
    
    CHECKBZRANGE = (UBound(vCellRangeValues)-LBound(vCellRangeValues) +1) * _
                                    (UBound(vCellRangeValues,2)-LBound(vCellRangeValues,2) +1)
End Function 

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...