Страницы: 1
RSS
Проверка данных при копировании данных макросом с одного листа на другой
 
Доброго дня всем, помогите дописать макрос, на листе ввод данных в ячейки A6:P6 вносится в ручную информация, после заполнения нажимаем кнопку внести данные и макрос копирует данные на листы персональные данные и движение. Если нажать еще раз на кнопку внести данные, то макрос опять скопирует эти же данные, нужно чтоб два раза подряд макрос одни и те же данные не мог копировать. Именно два раза подряд.
Код
Sub Add_Sell()
    Worksheets("Ввод данных").Range("G6:P6").Copy
    n = Worksheets("Персональные данные").Range("A100000").End(xlUp).Row
    Worksheets("Персональные данные").Cells(n + 1, 2).PasteSpecial Paste:=xlPasteValues
    Worksheets("Ввод данных").Range("A6").Copy 'Worksheets("Персональные данные").Cells(n + 1, 1)
    Worksheets("Персональные данные").Cells(n + 1, 1).PasteSpecial Paste:=xlPasteValues
    With Worksheets("Движение")
    n = .Range("A100000").End(xlUp).Row
    Range("A6:G6").Copy '.Range("A" & n)
    Worksheets("Движение").Cells(n + 1, 1).PasteSpecial Paste:=xlPasteValues
    End With
End Sub
 
Код
Sub Add_Sell()
    Dim n As Long
    n = Worksheets("Персональные данные").Range("A100000").End(xlUp).Row
    If Worksheets("Персональные данные").Cells(n, 1).Value <> Worksheets("Ввод данных").Range("A6").Value Then
        Dim arr As Variant
        arr = Worksheets("Ввод данных").Range("G6:P6")
        Worksheets("Персональные данные").Cells(n + 1, 2).Resize(UBound(arr, 1), UBound(arr, 2)) = arr
        Worksheets("Персональные данные").Cells(n + 1, 1).Value = Worksheets("Ввод данных").Range("A6").Value
        With Worksheets("Движение")
            n = .Range("A100000").End(xlUp).Row
            arr = Range("A6:G6")
            .Cells(n + 1, 1).Resize(UBound(arr, 1), UBound(arr, 2)) = arr
        End With
    End If
End Sub
 
МатросНаЗебре, подозреваю проверки одной ячейки будет не достаточно.
 
МатросНаЗебре, спасибо большое, что то нужно)))
 
Цитата
написал:
подозреваю проверки одной ячейки будет не достаточно.
Цитата
написал:
что то нужно)))
Подозрения развеялись )
 
Цитата
написал:
подозреваю проверки одной ячейки будет не достаточно.
Как бы да, хорошо бы было если проверка была ячеек А6 и Е6 и F6 на листе Ввод данных, но это в идеале.
 
МатросНаЗебре, можно сделать проверку по ячейкам А6, Е6 и F6 на листе Ввод данных?
 
проверка А6 у вас уже есть (4 строчка кода) по аналогии сделайте проверку других.
Изменено: V - 25.05.2022 10:41:54
 
V, еще бы знать как сделать, не профи в VBA
 
Цитата
Serega Ivanov написал:
...нужно чтоб два раза подряд макрос одни и те же данные не мог копировать. Именно два раза подряд.
Как вариант, можно сразу после ввода данных вызывать Add_Clear() и плюс в начало макроса Add_Sell добавить следующий код:
Код
If Application.WorksheetFunction.CountA(Лист1.Range("A6:P6")) <> 16 Then
        MsgBox "Не все поля заполнены!", vbExclamation, Environ("USERNAME")
        Exit Sub
End If

------------------------
А как Вам вариант, чтобы вводить данные через форму ввода, а не через лист?
Форма выглядит так:

она есть внутри файла, код ввода данных пока не прописан, так-как неизвестно подойдет ли Вам этот вариант. Суть такая: лист "Ввод данных" не нужен вообще, данные вводятся через форму.
Изменено: DANIKOLA - 25.05.2022 13:13:55
 
Цитата
написал:
А как Вам вариант, чтобы вводить данные через форму ввода, а не через лист?
Изначально тоже рассматривал форму ввода, но пошел простым путем(я пока только разбираюсь в макросах и формулах эксель)  
Изменено: Serega Ivanov - 26.05.2022 05:02:22
Страницы: 1
Наверх