У меня есть 2 файла Excel. Один шаблон, который вы заполняете, и одна база данных. Код, который я написал, копирует данные из шаблона wb и вставляет их в базу данных wb. Я хочу сделать это перед вставкой, чтобы проверить, совпадают ли некоторые значения (значения из шаблона и значения из последней строки из базы данных. Это мой код до сих пор. Я новичок в VBA, я Я использовал для кодирования с java, поэтому я не очень осведомлен о том, как здесь делать.
Sub DONE()
Dim dataFrom As Range
Dim dataTo As Range
Dim dataBase As Workbook
Dim deleted As Range
'First attempt
Dim nameInWbRng As Range
Dim nameInWb As String
Dim nameInDBRNG As Range
Dim nameInDB As String
Dim dayInWbRng As Range
Dim dayInWb As Date
Dim dayInDbRng As Range
Dim dayInDb As Date
Dim activityInWbRng As Range
Dim activityInWb As String
Dim activityInDbRng As Range
Dim activityInDb As String
Dim destinationInWbRng As Range
Dim destinationInWb As String
Dim destinationInDBRng As Range
Dim destinationInDB As String
Set nameInWbRng = Sheets("Sheet1").Range("E2")
nameInWb = nameInWbRng.Value
Set dayInWbRng = Sheets("Sheet1").Range("B2")
dayInWb = dayInWbRng.Value
Set activityInWbRng = Sheets("Sheet1").Range("C2")
activityInWb = acivityInWbRng.Value
Set destinationInWbRng = Sheets("Sheet1").Range("D2")
destinationInWb = destinationInWbRng.Value
'end
Range("E2").Value = Application.UserName
Application.ScreenUpdating = True
Set dataFrom = Sheets("Sheet1").Range("A2:G2")
Set dataBase = Workbooks.Open("C:\Users\katya.atanasova\Desktop\Iskren\Iskren v1.2\DB.xlsx")
With dataBase.Sheets("Sheet1")
Set nameInDBRNG = .Range("E" & Rows.Count).End(xlUp)
nameInDB = nameInWbRng.Value
Set dayInDbRng = .Range("B" & Rows.Count).End(xlUp)
dayInDb = dayInWbRng.Value
Set activityInDbRng = .Range("C" & Rows.Count).End(xlUp)
activityInDb = acivityInWbRng.Value
Set destinationInDBRng = .Range("D" & Rows.Count).End(xlUp)
destinationInDB = destinationInWbRng.Value
If nameInDB = nameInWb Then
If dayInDb = dayInWb Then
If acitivityInDb = activityInWb Then
If destinationInDB = destinationInWb Then
dataFrom.Copy
Set dataTo = .Range("A" & Rows.Count).End(xlUp).Offset(1)
dataTo.Replace
Else
dataFrom.Copy
Set dataTo = .Range("A" & Rows.Count).End(xlUp).Offset(1)
dataTo.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True
End With
dataBase.Close SaveChanges:=True
Set deleted = Sheets("Sheet1").Range("F2")
deleted.ClearContents
Application.ScreenUpdating = True
End Sub