powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Бланк заказа
22 сообщений из 22, страница 1 из 1
Бланк заказа
    #37110444
Zixxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хлопцы, хочу продолжить свои поиски в реализации бланка заказа. В предыдущей задаче так и не нашел решение как закрепить область для прокрутки. Поэтому хочу пойти другим путем.

Во вложении прикрепленный файл, по примеру расскажу как хочу сделать.
1. На странице "Бланк" содержится список артикулов "Agnez, Amaranta, Azalia"
2. При нажатии на любой артикул нужно взять имя этой ячейки (например у Agnez это "art_agnez") и найти на странице "Данные" по этому имени область "agnez" (все области я обвел жирной светло-синей рамкой). Найденную область на странице "Данные", разместить на странице "Бланк" под групповой колонкой "Характеристика".
3. Если на странице "Бланк" изменяется колонка "Количество" в ставленной области, то это количество должно записаться в соответствующие ячейки этой же области на странице "Данные".

Скажите можно ли такое сделать?
...
Рейтинг: 0 / 0
Бланк заказа
    #37110562
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zixxx,

при известном умении и упорстве - возможно все
...
Рейтинг: 0 / 0
Бланк заказа
    #37110649
Zixxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_,

Это по определению понятно, а если конкретнее то какими методами?
...
Рейтинг: 0 / 0
Бланк заказа
    #37110807
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zixxx,

что Вам конкретно непонятно?

готов объяснить. Но делать за Вас нет желания.
...
Рейтинг: 0 / 0
Бланк заказа
    #37110836
Zixxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    If Selection.Column =  2  Then
   
        On Error Resume Next
        Dim cell As Range: Set cell = Target.EntireRow.Cells( 2 )
        
        Name = cell.Text
        
        Application.Goto Reference:=Name
        Selection.Copy
        Range("D4").Select
        ActiveSheet.Paste

    End If
End Sub
Данные выделяет но вставлять не хочет
...
Рейтинг: 0 / 0
Бланк заказа
    #37110937
kinotaurus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zixxx,

Отключи:
Код: plaintext
1.
'On Error Resume Next
и посмотри, на чем споткнется
...
Рейтинг: 0 / 0
Бланк заказа
    #37110948
Zixxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разобрался, теперь копирует. Но при выполнении операции видно как на время открывается другая страница и их нее копируются данные, т.е. видно мигание страниц. Как это можно исправть?
...
Рейтинг: 0 / 0
Бланк заказа
    #37111039
kinotaurus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zixxx,

А есть какой-то резон действовать через буфер обмена?

Если изучать объектную модель Excel по скриптам, записанным макрорекордером, то появляется сильный перекос в сторону объекта Selection -- он на самом деле вовсе не так вездесущ, как кажется макрорекордеру :)
...
Рейтинг: 0 / 0
Бланк заказа
    #37111054
Zixxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kinotaurusZixxx,

А есть какой-то резон действовать через буфер обмена?

Если изучать объектную модель Excel по скриптам, записанным макрорекордером, то появляется сильный перекос в сторону объекта Selection -- он на самом деле вовсе не так вездесущ, как кажется макрорекордеру :)

Я по другому не умею :(
...
Рейтинг: 0 / 0
Бланк заказа
    #37111064
kinotaurus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zixxx,

Опиши словами, что должен делать макрос и какого рода данные находятся во втором столбце (адреса ячеек? имена диапазонов? ссылки на ячейки в других книгах?...)
...
Рейтинг: 0 / 0
Бланк заказа
    #37111163
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZixxxkinotaurusZixxx,

А есть какой-то резон действовать через буфер обмена?

Если изучать объектную модель Excel по скриптам, записанным макрорекордером, то появляется сильный перекос в сторону объекта Selection -- он на самом деле вовсе не так вездесущ, как кажется макрорекордеру :)

Я по другому не умею :(
можно тупо
Код: plaintext
Cells(x,y)=Cells(x1,y1)
Код: plaintext
Range("D4").value=target.value
...
Рейтинг: 0 / 0
Бланк заказа
    #37111367
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shamanus,

или выключить на время обновление экрана:

Application.ScreenUpdating=false


потом, конечно, включить обратно

это и ускорит и мигание уберет.
...
Рейтинг: 0 / 0
Бланк заказа
    #37111382
kinotaurus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shamanus,

Там, по-моему, хитрее: target хранит не само значение, а в каком-то виде адрес, по которому нужно взять значение. Если это адрес ячейки, то легко:
Код: plaintext
1.
Range("D4").Value = Range(Target).Value
Но там может стоять имя диапазона, а тогда такой номер не прокатит.

Есть у меня подозрение, что задачу ТС можно реализовать вообще без кода: рядом с ячейкой D4 выпадающий список и функция INDIRECT...
...
Рейтинг: 0 / 0
Бланк заказа
    #37111390
kinotaurus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_,

Решение, имхо, не очень хорошее: во-первых, затычка, во-вторых, если где-то что-то срубится по дороге, то так и останемся со ScreenUpdating=False...
...
Рейтинг: 0 / 0
Бланк заказа
    #37111504
kinotaurus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zixxx,

Пардон, я зацепился за код, не заметив, что приложен файл :(.

А опиши исходную задачу: для чего должен применяться этот файл? Правильно ли я понимаю: пользователь выделяет элемент в списке на листе Бланк, смотрит на появившиеся характеристики справа, решает, нужно ли ему это и в каком количестве -- а на листе Данные при этом формируется заказ?
...
Рейтинг: 0 / 0
Бланк заказа
    #37111697
_slan_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kinotaurus_slan_,

Решение, имхо, не очень хорошее: во-первых, затычка, во-вторых, если где-то что-то срубится по дороге, то так и останемся со ScreenUpdating=False...


про затычку - не понял

что может срубиться при copy-paste ?

ну и on error application.screenupdating=true..
...
Рейтинг: 0 / 0
Бланк заказа
    #37111738
kinotaurus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_slan_,

Срубиться может как угодно и на чем угодно, как показывает практика :) Даже на копипасте :)

Затычка -- в том смысле, что код можно написать без активации листов и объекта Selection, и тогда Excel не будет мигать при выполнении, но мы вместо этого код не меняем, а глобально отрубаем обновление экрана. Это как если у тебя короткое замыкание, а ты вместо ремонта розетки отрубаешь подстанцию...
...
Рейтинг: 0 / 0
Бланк заказа
    #37112255
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kinotaurusShamanus,

Там, по-моему, хитрее: target хранит не само значение, а в каком-то виде адрес, по которому нужно взять значение. Если это адрес ячейки, то легко:
Код: plaintext
1.
Range("D4").Value = Range(Target).Value
Но там может стоять имя диапазона, а тогда такой номер не прокатит.

Есть у меня подозрение, что задачу ТС можно реализовать вообще без кода: рядом с ячейкой D4 выпадающий список и функция INDIRECT...
у таргета тип range
тип Range адрес хранить не может
...
Рейтинг: 0 / 0
Бланк заказа
    #37112260
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тип Range адрес хранить может.
Range.Address.
...
Рейтинг: 0 / 0
Бланк заказа
    #37112279
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kinotaurusкод можно написать без активации листов и объекта Selection, и тогда Excel не будет мигать при выполнении, но мы вместо этого код не меняем, а глобально отрубаем обновление экрана. Это как если у тебя короткое замыкание, а ты вместо ремонта розетки отрубаешь подстанцию...Я вот позволю себе не согласиться от отказа в отключении обновления экрана. Т.к. даже если нет Selection, но присутствует множественное изменение значения ячеек - то код будет РЕАЛЬНО тормозить. Притом это будет весьма ощутимо, если, к примеру, заполнять массив ячеек более 2000. Пусть там не будет ни одного .Select-а - код будет выполняться очень долго. А если отключить обновление экрана - то код выполнится за пару секунд.
Это я написал для Zixxx в первую очередь. Чтобы не отметался метод отключения экрана, как неконструктивный. Равно как и не пихался везде. Надо все использовать в меру и исходя из выполняемых задач и объемов.

И обработка ошибок тоже является неотъемлемой частью разработки приложений и отлов всех возможных ошибок должен быть на стадии разработки. При выполнении кода ошибки должны перехватываться и тем или иным способом обрабатываться. Пользователь в любом случае не должен видеть стандартных сообщений об ошибке, выдаваемых VBA.

Все сказанное выше: лично мое мнение, которого я придерживаюсь в разработке своих приложений.
...
Рейтинг: 0 / 0
Бланк заказа
    #37112333
Фотография Shamanus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-duke,

это не стандартная маска возвращаемая типом Range, стандартная Value, а в контексте данной задачи, неверно, что в Value хранится адрес. На эту ошибку kinotaurus я и указал.
...
Рейтинг: 0 / 0
Бланк заказа
    #37112443
kinotaurus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,

Согласен.

Shamanus,

Да, оплошал -- не сам Target, а Target.EntireRow.Cells(2).

Код
Код: plaintext
1.
2.
3.
Set cell = Target.EntireRow.Cells( 2 )
Name = cell.Text
Application.Goto Reference:=Name
-- это несколько извращенный способ взять использовать значение (вернее, отображаемое значение) второй ячейки в щелкнутой строке в качестве адреса

(я когда писал свои комменты, еще не видел эксельник; там не адреса -- там имена диапазонов)
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Бланк заказа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]