触发Excel Worksheet_Change以使用R更改单元格

时间:2019-11-27 14:09:37

标签: r excel vba

我使用R修改Excel文件中的单元格。

手动更改此单元格时,Worksheet_Change启动,以指示修改日期(在其他两个单元格中)。

当我在R中运行代码时,会在第46列中指示修改的日期(请参见VBA代码ModificationDate1)。列40中的修改日期(请参见VBA代码ModificationDate2)没有出现。我收到VBA错误1004。

未指示错误出现的位置。我无法单击调试。

我希望第40栏中的修改日期也出现。 (稍后,当我直接在Excel中进行更改时,将显示此内容。)

我在R中的代码:

if (NewInput != CurrentData) {
  xlApp <- COMCreate("Excel.Application")
  wb <- xlApp[["Workbooks"]]$Open("path.xlsm")
  sheet <- wb$Worksheets("Sheet1")
  cell  <- sheet$Cells(Outputrow + 6, 7)
  cell[["Value"]] <- paste0(NewInput)
  wb$Save()
  xlApp$Quit()
  }

我在vba中的代码

Private Sub Worksheet_Change(ByVal Target As Range)
'**ModificationDate1**
Dim WorkRng As Range
Dim Rng As Range

LastRow = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

Set Rng = Range(Cells(7, 7), Cells(LastRow, 7))

If Not Intersect(Target, Rng) Is Nothing Then
    Call UnprotectCells
    Cells(Target.Row, 46).Value = Date
    Call ProtectCells
End If

'**ModificationDate2**
Dim rng1 As Range
Dim rng2 As Range

Set rng1 = Range(Cells(7, 3), Cells(LastRow, 4))
Set rng2 = Range(Cells(7, 7), Cells(LastRow, 10))

If Not Intersect(Target, Union(rng1, rng2)) Is Nothing Then
    Call UnprotectCells
    Cells(Target.Row, 40).Value = Date
    Call ProtectCells
End If

End Sub

0 个答案:

没有答案