在Excel中分配给Shape时,宏出现错误

时间:2016-12-13 19:11:35

标签: r excel vba excel-vba

当我从Developer窗口运行它时,我的宏运行得很好。 我正在使用用BERT工具包创建的“R.ajseason”用户定义函数(允许用户使用R创建excel函数,以及其他功能)。它有3个参数:

  1. 执行季节性调整的范围(变量“nsa”)
  2. 字符串格式的开始日期(变量“inicio”)
  3. 反映数据系列频率的数字(变量“p”)
  4. 然而,当我尝试将其分配给形状时,会发生一些奇怪的事情。它不会返回范围内不同的调整值,而只返回整个范围内的第一个调整值,如下所示:

    enter image description here

    为什么从开发人员窗口运行代码的结果与单击代码分配的形状不同?我怎么能解决这个问题?

    这是我的代码:

    Sub Dessaz()
    
    Dim wb1 As Workbook
    Set wb1 = ActiveWorkbook
    
    Dim wsNSA As Worksheet
    Set wsNSA = wb1.Worksheets("NSA")
    
    Dim wsSA As Worksheet
    Set wsSA = wb1.Worksheets("SA")
    
    Dim col As Range
    
    LR = wsNSA.Cells(3, 1).End(xlDown).Row
    LC = wsNSA.Cells(3, 1).End(xlToRight).Column
    
    inicio = wsNSA.Cells(3, 1).Value
    inicio = Year(inicio) & "-" & Month(inicio) & "-" & "01"
    
    p = 12
    
    wsNSA.Activate
    For Each col In wsNSA.Range(Cells(3, 2), Cells(LR, LC)).Columns
    wsNSA.Activate
    nsa = wsNSA.Range(Cells(3, col.Column), Cells(LR, col.Column))
    
    wsSA.Activate
    sa = Application.Run("R.ajseason", nsa, inicio, p)
    wsSA.Range(Cells(3, col.Column), Cells(LR, col.Column)) = sa
    
    Next
    
    wsNSA.Activate
    Data = wsNSA.Range(Cells(3, 1), Cells(LR, 1))
    wsSA.Activate
    wsSA.Range(Cells(3, 1), Cells(LR, 1)) = Data
    
    End Sub
    

0 个答案:

没有答案