У меня есть код VBA, который работает, но не завершен (я могу добавить новые строки в другую книгу, но не могу понять, как перезаписать ячейки, если они уже существуют в другой книге). Логика заключается в том, что данные в столбце A, E и F уже существуют в моей основной рабочей книге, затем перезаписать еще добавить.Диапазон данных: A1: заголовки F15 находятся в строке 1, и пользователи будут вводить данные только в ячейки B2: D15, имя листа называется TaskList.это мой текущий VBA и третья часть моей VBA, я не могу тренироваться.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 1 Then Exit Sub ' IF ITS A HEADER, DO NOTHING.
On Error GoTo ErrHandler
Application.ScreenUpdating = False
ErrHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True
this captures if someone enters anything in any of the 3 fields and puts their username and entered date in
If Target.Column = 2 And Target.Row > 1 Or Target.Column = 3 And Target.Row > 1 Or Target.Column = 4 And Target.Row > 1 Then
Cells(Target.Row, 5).Value = Application.UserName
Cells(Target.Row, 6).Value = DateTime.Now
End If
End Sub
Эта рабочая книга VBA
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call CopyTasks
End Sub
Private Sub Workbook_Open()
Dim rng As Range
Set rng = Range("B2:F15")
rng.ClearContents
End Sub
Это отправляет данные в другую рабочую книгу
Sub CopyTasks()
Dim LastRow As Long, i As Long, erow As Long
LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To LastRow
If Cells(i, 5).Value = Application.UserName Then
Dim rng As Range
Set rng = Range(Cells(i, 1), Cells(i, 6))
rng.Copy
Dim wb As Workbook
Dim ws As Worksheet
Set wb = Workbooks.Open("C:\Users\myname\Documents\Master TaskList Data.xlsm")
Set ws = Worksheets("Data")
erow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
ActiveSheet.Cells(erow, 1).Select
ActiveSheet.Paste
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.CutCopyMode = False
End If
Next i
End Sub