【问题标题】:Doesn't .setDataArray method accept date type?.setDataArray 方法不接受日期类型吗?
【发布时间】:2020-08-08 13:17:01
【问题描述】:

下面的代码应该创建一个锯齿状数组,以便我可以使用 .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 有什么问题?

【问题讨论】:

    标签: arrays basic jagged-arrays openoffice-basic


    【解决方案1】:

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

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

    换行

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多