Страницы: 1
RSS
Как создать несколько макросов в одном файле чтобы бралась информация из разных вкладок, Нужно в каждую кнопку прописать макросы, чтобы, нажимая на кнопку, в столбец - стоимость без ндс вставлялась цена (она берется из вкладки, соответствующей контрагенту)
 
Добрый день. Я снова к Вам за помощью и снова с макросами. У меня есть таблица, в которую я вставляю код. Он по формуле (уже введенной) вставляет наименование. Колонка - кол-во к отгрузке заполняется вручную. Мне нужно в каждую кнопку прописать макросы, чтобы, нажимая на кнопку, в столбец - стоимость без ндс вставлялась цена (она берется из вкладки, соответствующей контрагенту). Нам надо отталкиваться от кода, который вбивается в первую колонку первого листа. Помогите прописать хотя бы один макрос, а я потом уже по шаблону сделаю остальные, а то их 25 штук(((((
 
Исходя из вопроса, не проще фонмулы? Или макрорекордер.
Инженер не тот, кто все знает, а тот кто знает где найти ответ.
 
Добрый день.
Формулы не проще, так как один и тот же код есть в обеих вкладках, но мне, например, сейчас нужна цена АЛСАН, а потом цена АСТОМСТРОЙ на один и тот же код.
Макрорекордер? Простите, но не сталкивалась с таким...
 
Вкладка Разработка, слева записать макрос. Выполняеете что надо и потом редактируете.
Изменено: Irbis_evs - 22.06.2017 15:33:06
Инженер не тот, кто все знает, а тот кто знает где найти ответ.
 
Я, наверное, тупень... я не умею записывать макрос((( не понимаю как/что/куда надо прописывать...
Я уже на этом сайте обращалась за помощью. Мне прописали один макрос, а на основании его, я уже прописывала идентичные. Мне просто нужно сделать один, а остальные я сделаю как на подобии шаблона(((((((
 
Сделайте файл плиз, где виден вставленный код и наименование вставленное по формуле!!
"Все гениальное просто, а все простое гениально!!!"
 
Я не могу его прислать... он весит 1,7Мб((((((((((((((((((((((
 
Код
Sub asd()
    Dim alsan As Worksheet
    Dim xrow As Long

    On Error Resume Next

    Set alsan = Sheets("Алсан")
    xrow = 0
    For i = 2 To Cells(Rows.Count, "B").End(xlUp).Row
        xrow = alsan.Range("A:A").Find(Cells(i, "A").Value, LookAt:=xlWhole).Row
        If xrow <> 0 Then Cells(i, "D") = alsan.Cells(xrow, "C").Value * Cells(i, "C").Value
        xrow = 0
    Next i
End Sub
Изменено: kavaka08 - 22.06.2017 16:12:03
 
нули выводит, но не цены((
 
Код
Sub Алсан()
Dim i&, sht1 As Worksheet, dicObj As Object, sht2 As Worksheet
Set sht1 = Sheets("Алсан")
Set sht2 = Sheets("Титул")
Set dicObj = CreateObject("Scripting.Dictionary")
With sht1
    For i = 1 To .Range("a" & .Rows.Count).End(xlUp).Row
        dicObj.Item(CStr(.Cells(i, 1).Value)) = .Cells(i, 3).Value
    Next i
End With
With sht2
    For i = 2 To .Range("a" & .Rows.Count).End(xlUp).Row
        If dicObj.exists(CStr(.Cells(i, 1).Value)) Then _
            .Cells(i, 4).Value = dicObj.Item(CStr(.Cells(i, 1).Value))
    Next i
End With
End Sub
Изменено: Nordheim - 22.06.2017 16:28:22
"Все гениальное просто, а все простое гениально!!!"
 
Можно не плодить кучу макросов, а сделать кнопки ActiveX присвоить им наименования листов, и при нажатии на кнопку задать переменную
которая будет называться как кнопка, и соответственно лист. В макрос вместо наименования листа вставить переменную, и программа будет отрабатывать тот лист который нужен. Я как бы за минимизацию кода, хотя у самого не всегда получается минимизировать, иногда такие монстры выходят аж страшно становится :)
"Все гениальное просто, а все простое гениально!!!"
 
На словах это выглядит очень просто, но я этого еще ни разу не делала...
А этот макрос работает!!! Правда не совсем корректно, но я щас попробую подправить))))
СПАСИБО ВАМ ОГРОМНОЕ!!!!
А про кнопку активХ прочитаю в интернете... может пойму как это сделать)
 
Вот пример! А что работает не корректно? Я вроде подправил.
Изменено: Nordheim - 22.06.2017 16:35:14
"Все гениальное просто, а все простое гениально!!!"
 
Получается, когда я вставляю, например, 10 кодов, нажимаю на кнопку, она мне подбирает цены. Но, если 5 кодов удаляю, а пять меняю на другие, она мне исправляет цены на те, что изменены, а там, где пустая строчка в графе кода она не меняет цену на ноль или на пустую ячейку.  
 
Кнопки активХ выглядят более читабельно. К
 
где пустая не меняет на 0, а нужно? м.б. их удалять ежели они пустые?
"Все гениальное просто, а все простое гениально!!!"
 
Если меняете на другие , то нужно нажать на кнопку с тем листом  из которого взяты заменённые коды.
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
где пустая не меняет на 0, а нужно? м.б. их удалять ежели они пустые?
Можно вручную удалять, но в идеале менять на 0))))
 
Цитата
Nordheim написал:
Если меняете на другие , то нужно нажать на кнопку с тем листом  из которого взяты заменённые коды.
Это я поняла. Я уже сижу и делаю остальные 25 листов))))))))  
 
А вам в определенный момент времени нужно видеть цены только одного листа или со всех листов?
 
Цитата
Kuzmich написал:
А вам в определенный момент времени нужно видеть цены только одного листа или со всех листов?
Одного определенного листа. Потом другого, через полчаса третьего))))) Это как единый общий прайс-лист)))
 
Макрос с учетом переменной , вставьте как пример в тот файл кот мной прикреплен, должен цену менять на 0
Код
Sub Алсан(m)
Dim i&, sht1 As Worksheet, dicObj As Object, sht2 As Worksheet
Set sht1 = Sheets(m)
Set sht2 = Sheets("Титул")
Set dicObj = CreateObject("Scripting.Dictionary")
With sht1
    For i = 1 To .Range("a" & .Rows.Count).End(xlUp).Row
        dicObj.Item(CStr(.Cells(i, 1).Value)) = .Cells(i, 3).Value
    Next i
End With
With sht2
    For i = 2 To .Range("a" & .Rows.Count).End(xlUp).Row
        If .Cells(i, 1) = "" Then .Cells(i, 4) = 0
        If dicObj.exists(CStr(.Cells(i, 1).Value)) Then _
            .Cells(i, 4).Value = dicObj.Item(CStr(.Cells(i, 1).Value))
    Next i
End With
End Sub
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
Макрос с учетом переменной , вставьте как пример в тот файл кот мной прикреплен, должен цену менять на 0
Код
Неа, не меняет...((((
 
Т.е. вы изменяете столбец с кодами, затем кликаете на кнопку соответствующей фирмы,и цены должны подтянуться
на лист Титул. Так?
 
Цитата
Strelka47 написал:
Неа, не меняет...((((
Вы заменили старый макрос или просто вставили новый ?
"Все гениальное просто, а все простое гениально!!!"
 
Проверяйте, обновляет весь прайс одной кнопкой!
"Все гениальное просто, а все простое гениально!!!"
Страницы: 1
Читают тему
Наверх