除非在公式中,公共职能不起作用

时间:2017-07-21 20:53:06

标签: vba excel-vba formula excel

我有一个名为" Get_Months"我试图在Sub中使用它。当我把它放在一个公式中时,我已经设法让事情发挥作用了:

Worksheets("Sheet1").Range("CO2:CO" & LastRow).FormulaR1C1 = "=IF(RC[10]=""DUMMY"",Get_Months(RC[-80],RC[-79] + 1),""ERROR"")" 

我试图避免将公式放在纸张上,所以我尝试这样的事情:

 Dim LastRow As Long
 LastRow = Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row

 Set SelectionRNG = Range("M2:N" & LastRow)
 For Each rngRow In SelectionRNG.Rows
 rngRows.Cells(1, 80) = Get_Months(rngRows.Cells(1, 1), rngRows.Cells(1, 2) + 1)

公共函数的语法(据我所知)是" Get_Months(Date1,Date2)。

任何人都可以给予的任何提示将不胜感激!

2 个答案:

答案 0 :(得分:1)

您可以将公式转换为如下值:

With Range("CN2:CN" & LastRow)
    .FormulaR1C1 = "=IF(RC[10]=""DUMMY"",Get_Months(RC[-80],RC[-79] + 1),""ERROR"")"
    .Value = .Value
End With

答案 1 :(得分:0)

不要循环。

Dim LastRow As Long
LastRow = Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row

With Range("CN2:CN" & LastRow)
   .Value = Get_Months(.Cells(1, -80), .Cells(1, -79) + 1)
End With