首页 > 解决方案 > 如何将 Lotus 范围值放入数组

问题描述

Lotus 123 中是否有一种快速方法可以将范围内的所有单元格值放入数组中。我正在寻找类似于 Excel VBA 的东西,它的速度非常快。

Dim arrValues() As Variant
arrValues = rg.Value

生成的数组也可以被操作并放回工作表中;就我而言,我想将其放入 Excel 中。基本上取代复制和粘贴。对内存中的数组进行操作比一次操作一个单元要快得多。

我知道如何通过一次读取一个单元格来做到这一点,但我正在寻找一种类似于 Excel 的更快方法。

'Lotus Script
Dim r As Range
Set r = CurrentDocument.Ranges("A:A1..A:D4")
Dim x, y As Integer
For x = 0 To 3
    For y = 0 To 3
        Print (r.Cell(x, y).cellvalue)
    Next
Next

请注意,我特别没有使用 VBA 进行标记,因为这只能由了解 Lotus Script 的人来回答。这与 VBA 无关。

如何将 Lotus 123 范围值放入数组?

标签: lotusscript

解决方案


在帮助文件中找到了这个:Range.GetCellData方法。

获取范围内的数据,作为一组指向单个单元格内容的指针引用。此方法分配内存用于复制范围的内容,设置内存中的值,并返回可由外部 C 程序使用的数组指针。

句法

arraypointer = range.GetCellData(celldatatype)

参数celldatatype

变体(CellDataType 枚举)。返回的单元格数据的格式。下表列出了此参数的允许值。

价值和描述

  • $CellValue 返回一个指向字符串数组的指针。字符串包含单元格评估的格式化值。空白单元格导致 NULL 指针。
  • $FormulaContents返回一个指向字符串数组的指针。这类似于 $CellValue,除了字符串是公式单元格的内容(例如,“+A1+@SUM(B1)”)。所有其他类型的单元格都会产生 NULL 指针。
  • $Double 返回一个指向双精度数组的指针。空白单元格和标签返回为零。NA 和 ERR 被编码为无效数字。

返回值:

长。指向指针数组的指针,范围内的每个单元格都有一个指针。数组按行/列/工作表排序。例如,表示范围 [A:A1..B:B2] 的数组将以 A:A1、A:A2、A:B1、A:B2、B:A1、B:A2、B 的顺序给出: B1,B:B2。

用法

此方法在内部为返回的数组分配内存,调用者必须释放该内存。


推荐阅读