0

下面的代码应该创建一个锯齿状数组,以便我可以使用 .setDataArray 方法将其内容粘贴到工作表中,但它不起作用。

我收到错误消息:“BASIC 运行时错误。未设置对象变量。”

但是,通过进行一些测试,似乎我实际上有一个锯齿状数组,其中包含 9 个“行”和一个一维数组作为其每个元素。

sub build_jagged_array()

    dim my_date as date, num_rows as long, arr1(), arr2
    my_date = dateserial(1994,7,1)
    num_rows = 9
    redim arr1(0 to num_rows-1)
    for i = 0 to num_rows-1
        arr2 = array(dateadd("m",i,my_date))
        arr1(i) = arr2
    next i

    sheet = thiscomponent.getsheets.getbyname("main")
    range_saida = sheet.getCellRangeByName("A20:A28")
    'with the arr1 below, the setDataArray method works     
    'arr1 = array(array(1),array(1),array(1),array(1),array(1),array(1),array(1),array(1),array(1))
    range_saida.setdataarray(arr1)

end sub

在进行测试时,我将由上面的 sub 创建的 arr1 更改为以下 arr1,并且 .setDataArray 按预期工作:

arr1 = array(array(1),array(1),array(1),array(1),array(1),array(1),array(1),array(1),array(1))

请问,上面的sub有什么问题吗?

4

1 回答 1

0

我显然发现了问题。.setDataArray方法似乎不允许数组内容为日期类型。所以我改变了这一行:

arr2 = array(dateadd("m",i,my_date))

为线

arr2 = array(dateadd(clng("m",i,my_date)))

现在代码按预期工作,除了我必须将单元格格式化为日期类型,因此它不显示整数而不是日期。

于 2020-08-08T15:12:57.147 回答