VBA перезаписать или добавить в новую книгу - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть код 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...