Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Метод AutoFill - возникает ошибка при запуске кода
 
Mershik!!!! большое спасибо!!
я в упор не видел что там .FillDown остался..

Даже когда Дмитрий(The_Prist) Щербаков написал часть кода без .FillDown..
виной всему - моя невнимательность..

Еще раз ОГРОМНОЕ СПАСИБО!
Метод AutoFill - возникает ошибка при запуске кода
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Для Range Вы указали явно лист, а для Cells - нет. Отсюда и ошибка. Также, кстати, ошибка может быть и из-за некорректного значения в переменной Endrow. Проверьте что в ней на момент ошибки.
Дмитрий, спасибо за статью, очень много полезных подсказок.

Для Cells попытался также указать какой лист активен - не помогло.
Endrow определяется верно - последняя строка с данными в сформированной таблице.

голову сломал откуда эта ошибка "Метод AutoFill из класса Range завершен неверно"
в принципе код срабатывает абсолютно верно, но из-за этого косяка я не могу его продолжить :(
Метод AutoFill - возникает ошибка при запуске кода
 
Простите, файл приложил. там "Кнопка 6" на листе "Приложение 1 к заявлению"

3ю кнопку в Userform1 можно не нажимать, пока там ничего не писал.
1. Вводим кол-во ТС (любое)
2. Нажимаем кнопку "Сформировать таблицу"
3. Нажимаем кнопку "Заполнить приложение 1"
Метод AutoFill - возникает ошибка при запуске кода
 
Всем доброго дня!

в VBA чайник, но набросал код. Его смысл - заполнить 28 ячеек формулами ячейка=ячейка, далее он протягивает данный код на весь необходимый диапазон создаваемой таблицы.
код срабатывает, но выдает ошибку "Метод AutoFill из класса Range завершен неверно"
просмотрел кучу тем на разных форумах, чаще всего вижу решение - активировать лист. Но, к сожалению мне это не помогло.
посмотрите, пожалуйста, где косяк..

Ошибка возникает в строке
Код
"Sheets("Приложение_1_К_Заявлению").Range("B9:AB9").AutoFill Destination:=Sheets("Приложение_1_К_Заявлению").Range(Cells(StartRow, StartCol), Cells(Endrow, EndCol)).FillDown, Type:=xlFillDefault"

заранее признателен!
поиск данных в таблице 2 на основании введенных в таблице 1, Запись данных в таблицу 1 из таблицы 2 на основании введенных данных в нескольких ячейках
 
Mershik,спасибо за набросок кода, решил не тянуть инфу из файла, пока нет времени на проработку полноценного кода на интеграцию данных из другой книги.

Решил просто накалякать форму поиска, Ваш код помог в выводе нужной инфы в ListBox.


Еще раз спасибо!
поиск данных в таблице 2 на основании введенных в таблице 1, Запись данных в таблицу 1 из таблицы 2 на основании введенных данных в нескольких ячейках
 
Пошел смотреть, спасибо!
поиск данных в таблице 2 на основании введенных в таблице 1, Запись данных в таблицу 1 из таблицы 2 на основании введенных данных в нескольких ячейках
 
даже если будут вписаны в строку все подходящие варианты, пользователь может удалить не нужное.
Право выбора можно не предоставлять, чтобы не заморачиваться с кодом :))
поиск данных в таблице 2 на основании введенных в таблице 1, Запись данных в таблицу 1 из таблицы 2 на основании введенных данных в нескольких ячейках
 
оба этих параметра подойдут, и будут верными, пользователю просто нужно будет выбрать любой из них.
и можно не получать такое кол-во данных в ответе, достаточно только кода GUID модификации. Возможно это сократит сам код макроса.
Главное, нам всегда известна модель - Largus, Camry, Logan, это обязательное условие предоставления данных для пользователя.

бывают ситуации, когда Модель имеет вид "000010-29-Чайка" такую мы не сможем найти среди модификаций, ее там просто нет.
но тут все просто - берется любая модификация ТС к примеру от ВАЗ - прочие.

PS. актуальный вопрос.
Имея в таблице более 130 000 строк информации, долго ли будет осуществляется поиск? Может быть простым фильтром с помощью рук это будет куда быстрее.. ))
комп имеет 16 гигов оперативы, проц core i7, SSD
поиск данных в таблице 2 на основании введенных в таблице 1, Запись данных в таблицу 1 из таблицы 2 на основании введенных данных в нескольких ячейках
 
Понял, не все подробно изложил. Дополню чтобы было понимание происходящего и целей
Исходные данные
МаркапоПТСМодельпоПТСКатегорияТСМаркаМодельМодификацияGUIDМодификцияVINГодМощностьл.с.
ladalargusBladalargus 201987
ladalargusBladalargus 202087
ladalargusBladalargus 2018106
ladalargusBladalargus 201887
ladalargusBladalargus 2015105
То что мы видим в МаркапоПТС и МодельпоПТС таким оно и останется.
Можно записать в столбец "Модификация" то, как выглядит это в файле "Модификации ТС" но это сделать не просто, так как файл "Модификации ТС" имеет размер более 6 мегабайт, и сформировать, к примеру, всплывающий список проблематично, так как тяжелый файл мне не подойдет, его сайт долго разбирает потом.

поэтому я представил что поиск может быть осуществлен по частичному совпадению - "Largus"
поиск данных в таблице 2 на основании введенных в таблице 1, Запись данных в таблицу 1 из таблицы 2 на основании введенных данных в нескольких ячейках
 
Забыл еще один важный момент, если поиск не даст результатов, должна быть выбрана модификации ТС (Марка - Прочие)
Допустим, не совпали годы выпуска, или нет варианта с указанными ЛС.
поиск данных в таблице 2 на основании введенных в таблице 1, Запись данных в таблицу 1 из таблицы 2 на основании введенных данных в нескольких ячейках
 
Уважаемые формучане, доброго дня!
возник вопрос по упрощению заполнения данных в таблице с помощью макроса.

Мысль такая:
имея 2 файла Excel, необходимо выполнить поиск данных в нужной ячейке на листе.

в рабочей таблице (шаблон для загрузки (приложил файл) вводим заранее известные данные:
1. Марка и модель ТС
2. год выпуска ТС
3. мощность двигателя

на основании этих данных выполнить поиск во втором файле (Модификации ТС).
Что нужно найти:
нужно найти GUID модификацию ТС (столбец I )
Чтобы верно найти нужный код модификации должны совпасть следующие значения:

1. Марка и модель
2. мощность двигателя
3. год выпуска.

С годом выпуска есть сложности, так как нам известен конкретный год выпуска ТС, а в файле "Модификации ТС" год выпуска имеет некий промежуток времени, например с 2017 по 2020 приведу пример.

исходные значения:
1. Lada Largus
2. 2019
3.  87 л.с.

Поиск необходимо выполнять опираясь на Модель ТС столбец "М" в файле "Шаблон для загрузки".

Что в итоге получается:
Нам подойдет строка в которой:
модель тачки -Largus
год выпуска попадает в промежуток времени, например 2019 - 2020, и у которой мощность двигателя будет 87 л.с.

при совпадении всех этих данных будет найдены варианты с подходящем кодом GUID Модификации ТС.

Если кому-то станет это интересным, но будет слишком трудозатратным процессом, готов обсудить иные условия реализации данной мысли ))

заранее признателен!
Генератор случайного неизменяемого числа, Генератор числа котрый зависит от введенных данных и записывает данные в ячейку в виде значения
 
Цитата
Jack Famous написал:
Djenkinss , а зачем вам  мой  префикс «PRDX», да ещё и в виде суффикса, позвольте узнать?  
Дык, я вашей функцией и пользовался, записал ее в ячейку, чтобы выполнялась по условию, работает отлично но, текущее время, вызванное функцией, постоянно меняется.
Тут получается так:
Внесли некие данные в таблицу - условие выполнилось, сгенерился ключ, к примеру Vasya.PupkinPRDX1234567
когда файлик сохранили и закрыли, при следующем открытии мы также видим этот ключ Vasya.PupkinPRDX1234567, стоит выполнить любое действие на листе - ключ сразу меняется на Vasya.PupkinPRDX654321.

Соответственно потребность в этом ключе уже отпадает, ведь при копировании данных их таблицы в общий файл, дубликат уже не найдется, и пользователь скопирует уже внесенную ранее информацию в общий файл.

А так данная функция отличная, давно ей пользуюсь, много перепробовал более простых, но только эта оказалась самой нормульной, возможно, тут я ее и взял (на этом форуме) но не факт.
Генератор случайного неизменяемого числа, Генератор числа котрый зависит от введенных данных и записывает данные в ячейку в виде значения
 
Цитата
Ігор Гончаренко написал:
только случайное число, которое зависит об другого числа - это функция какая-то, а не случайное число
Может и функция, но в той функции которую я приложил, это работает.
меняется время - меняется значение.
Вот то мне и нужен макрос который сделает все это сам, сгенерирует, скопирует (или сразу вставит значение) в нужную ячейку.
Уж описывал суть как можно подробнее :)
Генератор случайного неизменяемого числа, Генератор числа котрый зависит от введенных данных и записывает данные в ячейку в виде значения
 
Всем доброго дня!
Может кто-нибудь поделиться, или подсказать как сделать генератор случайного числа который будет отображать некоторое уникальное неизменяемое число, которое будет зависеть, например, от числа в другой ячейке.

К примеру представляю себе это таким образом:

Я ввожу данные в ячейку А1 столбца А - в ячейке В1 столбца В появляется некий код (число, может число с буквами, это не важно).
Далее если я введу данные в ячейку А2 - в ячейке В2 также появится этот уникальный код, который будет исчисляться исходя из числа в ячейке А2.
и так далее.
Плюс, получившееся число в ячейке В1...Bn должно быть неизменным, т.е. я предполагаю что в коде необходимо прописать запись в ячейку B1...Bn только значения.

Гарантированно числа в ячейках А1....Аn всегда будут отличаться.

У меня есть один код, нужно его додумать только:
Код
Function ГенерацияКлюча() As String
Static idn#, temp#
temp = Fix(Now * 100000#)
    If idn < temp Then
      idn = temp: ГенерацияКлюча = UserName & "PRDX" & temp
    Else
      idn = idn + 1: ГенерацияКлюча = UserName & "PRDX" & idn
    End If
End Function

Этот генератор случайного числа выводит уникальное число исходя из текущей даты (Now)

но так как дата (время) меняется всякий раз когда на листе производятся какие-либо действия, то получившееся уникальное число также меняется.

Может достаточно в данный код прописать запись получившихся данных в виде значения, и этого будет достаточно?

Заранее признателен!

Макрос на проверку задвоения данных, необходим Макрос на проверку задвоения данных при копировании
 
Спасибо всем кто помог.
В итоге рабочий код, который без открытия второй книги сравнивает данные из активной книги с данными в общем файле.
Код
Private Sub CommandButton2_Click()
        
        If Not TypeName(Selection) = "Range" Then Exit Sub
        Dim lr&, wb As Workbook, lb As Workbook, i As Long
        With Application: .ScreenUpdating = False: .DisplayAlerts = False: .EnableEvents = False: End With
        Set wb = GetObject("Путь к книге в которую заносятся данные из рабочей книги\Отчет.xlsm")
        Set lb = ThisWorkbook
        lr = wb.Sheets(1).Cells(Rows.Count, 5).End(xlUp).Row
        For i = 1 To Range("таблица1").Rows.Count
            If Range("Таблица1").Cells(i, 2).Value = "" Then
                MsgBox "Удалите пустые строки", vbCritical
                Exit Sub
            End If
        Next
        For i = 1 To Range("Таблица1").Rows.Count
            a = lb.Sheets(1).Cells(i + 4, 11).Value
            For j = 47 To wb.Sheets(1).Cells(Rows.Count, 5).End(xlUp).Row
                b = wb.Sheets(1).Cells(j, 11).Value
                If a = b Then
                    MsgBox "Найдены дубликаты!" & vbNewLine & "Проверьте введенные данные.", vbCritical
                    Exit Sub
                End If
            Next
        Next
        Range("Таблица1").Copy
        wb.Sheets(1).Cells(lr + 1, 1).PasteSpecial xlPasteValues
        Application.CutCopyMode = False
        wb.Close (True)
        With Application: .EnableEvents = True: .DisplayAlerts = True: .ScreenUpdating = True: End With
        Set wb = Nothing: Set lb = Nothing
Изменено: Djenkinss - 24.07.2019 09:26:00
Макрос на проверку задвоения данных, необходим Макрос на проверку задвоения данных при копировании
 
Большое спасибо!
Буду сидеть над этим кодом кумекать.
Макрос на проверку задвоения данных, необходим Макрос на проверку задвоения данных при копировании
 
Доброго дня!
Оч нужна помощь,, суть такова:

Есть код:
Код
Private Sub CommandButton2_Click()
        
        If Not TypeName(Selection) = "Range" Then Exit Sub
        Dim lr&, wb As Workbook, lb As Workbook, i As Long
        With Application: .ScreenUpdating = False: .DisplayAlerts = False: .EnableEvents = False: End With
        Set wb = GetObject("\\fs-virt\ДИС\УпрСпец\Отчеты_2019\Отчеты\NEW.xlsm")
        Set lb = ThisWorkbook
        lr = wb.Sheets(1).Cells(Rows.Count, 5).End(xlUp).Row
        For i = 1 To Range("Таблица1").Rows.Count
        If Range("Таблица1").Cells(i, 2).Value = "" Then
            MsgBox "УДАЛИТЕ ПУСТУЮ СТРОКУ, ИЛИ ВНЕСИТЕ ДАННЫЕ!", vbCritical
            Exit Sub
        End If
    Next i
        Range("Таблица1").Copy
        wb.Sheets(1).Cells(lr + 1, 1).PasteSpecial xlPasteValues
        Application.CutCopyMode = False
        wb.Close (True)
        With Application: .EnableEvents = True: .DisplayAlerts = True: .ScreenUpdating = True: End With
        Set wb = Nothing: Set lb = Nothing
End Sub

Данный код берет данные из одной таблицы, и переносит эти данные в другой файл (таблицу). Эта таблица - форма отчета, сотрудники в нее данные вносят, тыкают на кнопку, все внесенные данные улетают в общий файл который лежит на сетевом диске.
Так вот, нужно в этот код вписать проверку данных при копировании в общую таблицу, если макрос найдет задвоение, то копирование не произойдет, и вылезет сообщение об ошибке. Проверку необходимо осуществлять не по всей таблице, а только по одному столбцу (в общей таблице это столбец "К")

в итоге, в моих представлениях, это выглядело бы так:
Нажали кнопку - запустился макрос на копирование данных в другую книгу, макрос произвел проверку на задвоение данных - ничего не копировалось и вылезло сообщение об ошибке, иначе копирование произвелось, все счастливы :)))

Заранее признателен!

P.S.
После раздумий на всем этим пришел к выводу:
В данном макросе не будет хватать еще одного кода - кода который будет выделять строку в которой есть ячейка с задвоенными данными другим цветом.
Иначе пользователь просто не сможет понять, где же те самые данные, которые необходимо скорректировать.
Изменено: Djenkinss - 11.07.2019 16:13:37
Поиск пустой строки в диапазоне "Таблица1"
 
Ivan.kh,
В любом случае спасибо, основной вопрос решен.
Второй это уже моя фантазия :)
Мысли есть, попробую сначала сам.
Поиск пустой строки в диапазоне "Таблица1"
 
Ivan.kh, приогромнейшее Спасибо, проверка на наличие пустой строки работает отлично!

Кто-нибудь сможет помочь со вторым вопросом на проверку задвоения данных в общем файле?
Одинаковых данных никогда не бывает.
Сотрудники выгружают заполненные данные раз в неделю.
Следующая неделя - новый пустой отчет. (тот что на картинке)
Поиск пустой строки в диапазоне "Таблица1"
 
Ivan.kh, Скриншот прицепил, имеются всегда заполненные столбцы (№ПП) в нем автоматом проставляется номер при добавлении.
Поиск пустой строки в диапазоне "Таблица1"
 
Уважаемые гуру экселя, снова обращаюсь к Вам за помощью.. так как сам я еще чайник чайником в подобном вопросе.

Есть код, он копирует данные из одной книги, к примеру "Отчет" в общую книгу "NEW"
Код
        If Not TypeName(Selection) = "Range" Then Exit Sub
        Dim lr&, wb As Workbook, lb As Workbook, i As Long
        With Application: .ScreenUpdating = False: .DisplayAlerts = False: .EnableEvents = False: End With
        Set wb = GetObject("С:NEW.xlsm")
        Set lb = ThisWorkbook
        lr = wb.Sheets(1).Cells(Rows.Count, 5).End(xlUp).Row
        Range("Таблица1").copy
        wb.Sheets(1).Cells(lr + 1, 1).PasteSpecial xlPasteValues
        Application.CutCopyMode = False
        wb.Close (True)
        With Application: .EnableEvents = True: .DisplayAlerts = True: .ScreenUpdating = True: End With
        Set wb = Nothing: Set lb = Nothing

Код рабочий, спасибо форуму, и спасибо дядьке с ником "Казанский" за доработку. :)

Возможно, кто-то сможет подсказать, найти решение:

Необходимо данный код доработать, включить в него проверку, а именно - поиск пустой строки в диапазоне "Таблицы1", в случае присутствия таковой остановить исполнение кода до копирования "Таблицы1" "Range("Таблица1").copy"  и вывода текста с замечанием (MsgBox "Удалите пустую строку", vbCritical)

Чтобы в общий файлик не попадала информация (пустая)

Не могу понять в какую часть кода запилить эту проверку.

Если возможно, то прописать похожую проверку на наличие схожих данных в общем отчете (NEW), и остановки сценария чтобы исключить возможность задвоения информации в общем файле. также с выводом предупреждающего текста, типа "данные уже занесены в отчет".

К примеру, в табличке заполнены 2 строки, юзер тыкает на кнопку "отправить данные в общий отчет", его отвлекают, и он тыкает еще раз, так как забыл тыкал он или нет :)))

Заранее благодарен!

Удалить из макроса вставку с сохранением форматирования
 
Казанский,
Огромное спасибо, код работает в соответствии с запросом.
Осуществляется копирование и вставка только значений.

Где поставить плюсик? :))

Вопрос решен.
Удалить из макроса вставку с сохранением форматирования
 
Доброго дня!
Есть рабочий и удобный макрос по копированию данных из одной книги ("Отчет") в другую книгу ("Общий отчет"), но появилась необходимость копирования исключительно значений, без сохранения форматирования.

Вот сам макрос:      
Код
        If Not TypeName(Selection) = "Range" Then Exit Sub
        Dim lr&, wb As Workbook, lb As Workbook
        With Application: .ScreenUpdating = False: .DisplayAlerts = False: .EnableEvents = False: End With
        Set wb = GetObject("C:\\NEW.xlsm")
        Set lb = ThisWorkbook
        lr = wb.Sheets(1).Cells(Rows.Count, 5).End(xlUp).Row
        Range("Таблица1").Select
        Selection.EntireRow.Copy wb.Sheets(1).Cells(lr + 1, 1)
        wb.Close (True)
        With Application: .EnableEvents = True: .DisplayAlerts = True: .ScreenUpdating = True: End With
        Set wb = Nothing: Set lb = Nothing

Данный макрос взял из-какой-то темы на данном форме, уже давно.
Подскажите, что необходимо изменить в данном макросе для вставки в книгу "Общий отчет" только значений.

Заранее признателен!
Изменено: Djenkinss - 15.04.2019 09:27:03
Страницы: 1
Наверх