簡體   English   中英

Libreoffice calc - 如何將相同的值寫入范圍

[英]Libreoffice calc - how to write a same value into a range

我知道如何在 LO (7.2.4.1) Calc BASIC 中“選擇”一個范圍......

ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("D1:H6")

但是如何使用 BASIC 將值(例如“1”)寫入該范圍?

myRange = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("D1:H6")
myRange.Value = 1

給出“找不到屬性或方法”錯誤。 但是我在 Range 之后找不到 go 的任何屬性或值,以允許我做我想做的事。 到處亂跑並嘗試

myRange.setValue = 1
myRange.writeValue = 1
myRange.setString = "1"

並且許多其他變體也不起作用。

真的很感激這個解決方案。 謝謝。

您可以編輯單個單元格的值,但不能編輯整個范圍。 您將不得不一次遍歷一個范圍內的所有單元格,更改每個單元格的值。

Sub Set1ToD1H6
    myRange = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("D1:H6")
    For i = 0 To myRange.getRows().getCount()-1
        For j = 0 To myRange.getColumns().getCount()-1
            myRange.getCellByPosition(j, i).setValue(1)
        Next j
    Next i
End Sub

但是由於對單元格的讀寫操作在時間上與對整個范圍的讀寫操作相當,因此最好使用另一種方法 - 在數組中准備數據並在一次操作中將數據寫入范圍:

Sub Set1ToRange
    myRange = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("D1:H6")
    dataOfRange = myRange.getData()
    For i = LBound(dataOfRange) To UBound(dataOfRange)
        For j = LBound(dataOfRange(i)) To UBound(dataOfRange(i))
            dataOfRange(i)(j) = 1
        Next j
    Next i
    myRange.setData(dataOfRange)
End Sub

.getData() 和 .setData()方法適用於數值范圍值。 要處理文本字符串(和數字),請使用.getDataArray() 和 .setDataArray() ,要處理單元格公式,請使用.getFormulaArray() 和 .setFormulaArray()

暫無
暫無

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

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