簡體   English   中英

LibreOffice Calc 宏函數訪問單元格范圍

[英]LibreOffice Calc macro 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 <=6.xy 中工作,例如=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. 回歸?

如何訪問宏函數中的范圍值?

由於 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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM