Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Обеспечить выполнение макроса без переходов на рабочие листы - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обеспечить выполнение макроса без переходов на рабочие листы (Макросы/Sub)
Обеспечить выполнение макроса без переходов на рабочие листы
master-dd Дата: Среда, 04.07.2018, 22:12 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

2016
Доброго времени суток уважаемые форумчане. Прошу вас подсказать довольно простую (как мне кажется с вашей точки зрения) информацию. У меня есть 3 кода:
InsPic - это шаблон для копирования любой области рабочего листа в указанное место в виде картинки (код не мой - я его на просторах интернета нашёл и немного переделал под свои нужды)
PicCop - это, собственно, код, который задаёт нужные для копирования диапазоны и использует для копирования InsPic (я этот код "в комплексе" с вышеуказанным "позаимствовал" и попытался адаптировать)
Hide - код, с помощью которого скрываются строки по определённому критерию.

Проблема в том, что если запускать последние 2 кода не с того листа, в котором необходимо получить конечные результат, то приходится добавлять в код .Select (например, если лист конечного результата Final, то Sheets("Final").Select). Как переделать коды так, чтобы не было этих не нужных переходов, я не знаю (недостаток теории, очевидно)

Прошу вас помочь мне с этим вопросом разобраться. Файл-пример во вложении.
Заранее благодарю всех, кто откликнется.
К сообщению приложен файл: 9103702.xlsb(22.3 Kb)


Сообщение отредактировал master-dd - Среда, 04.07.2018, 22:15
 
Ответить
СообщениеДоброго времени суток уважаемые форумчане. Прошу вас подсказать довольно простую (как мне кажется с вашей точки зрения) информацию. У меня есть 3 кода:
InsPic - это шаблон для копирования любой области рабочего листа в указанное место в виде картинки (код не мой - я его на просторах интернета нашёл и немного переделал под свои нужды)
PicCop - это, собственно, код, который задаёт нужные для копирования диапазоны и использует для копирования InsPic (я этот код "в комплексе" с вышеуказанным "позаимствовал" и попытался адаптировать)
Hide - код, с помощью которого скрываются строки по определённому критерию.

Проблема в том, что если запускать последние 2 кода не с того листа, в котором необходимо получить конечные результат, то приходится добавлять в код .Select (например, если лист конечного результата Final, то Sheets("Final").Select). Как переделать коды так, чтобы не было этих не нужных переходов, я не знаю (недостаток теории, очевидно)

Прошу вас помочь мне с этим вопросом разобраться. Файл-пример во вложении.
Заранее благодарю всех, кто откликнется.

Автор - master-dd
Дата добавления - 04.07.2018 в 22:12
nilem Дата: Среда, 04.07.2018, 22:31 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1468
Репутация: 518 ±
Замечаний: 0% ±

Excel 2013
master-dd, привет
попробуйте
[vba]
Код
Sub PicCop()
Sheets("Source").Range("A1:E4").Copy
'Sheets("Final").Select    ' подправить, чтобы не было переходов
InsPic Sheets("Final").Range("B2:H9"), True, False
Application.CutCopyMode = False
End Sub

Sub Hide()
With Sheets("Final")    '.Select  ' подправить, чтобы не было переходов
    For i = 14 To 73
        If .Range("D" & i).Value = 0 Then .Rows(i).EntireRow.Hidden = True
    Next
End With
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеmaster-dd, привет
попробуйте
[vba]
Код
Sub PicCop()
Sheets("Source").Range("A1:E4").Copy
'Sheets("Final").Select    ' подправить, чтобы не было переходов
InsPic Sheets("Final").Range("B2:H9"), True, False
Application.CutCopyMode = False
End Sub

Sub Hide()
With Sheets("Final")    '.Select  ' подправить, чтобы не было переходов
    For i = 14 To 73
        If .Range("D" & i).Value = 0 Then .Rows(i).EntireRow.Hidden = True
    Next
End With
End Sub
[/vba]

Автор - nilem
Дата добавления - 04.07.2018 в 22:31
Hugo Дата: Среда, 04.07.2018, 22:40 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2826
Репутация: 637 ±
Замечаний: 0% ±

Доброго.
PicCop и без селекта у меня отработал.
А по второму так:
[vba]
Код
Sub Hide()
    Dim i As Long
    With Sheets("Final")
        For i = 14 To 73
            If .Range("D" & i).Value = 0 Then .Rows(i).EntireRow.Hidden = True
        Next
    End With
End Sub
[/vba]


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069


Сообщение отредактировал Hugo - Среда, 04.07.2018, 22:42
 
Ответить
СообщениеДоброго.
PicCop и без селекта у меня отработал.
А по второму так:
[vba]
Код
Sub Hide()
    Dim i As Long
    With Sheets("Final")
        For i = 14 To 73
            If .Range("D" & i).Value = 0 Then .Rows(i).EntireRow.Hidden = True
        Next
    End With
End Sub
[/vba]

Автор - Hugo
Дата добавления - 04.07.2018 в 22:40
master-dd Дата: Четверг, 05.07.2018, 12:42 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 58
Репутация: 0 ±
Замечаний: 0% ±

2016
nilem, Hugo, Спасибо за помощь.
По поводу Hide - это я признаю детскую ошибку. Я написал всё то же , что и вы (т.е. через With), но перед Range не поставил точку... Всё оказалось элементарно.
А вот с PicCop всё намного интереснее. Hugo, без Select он не отрабатывает так, как нужно - картинка выходит за пределы заданной целевой области. nilem, таким же образом я прописывал код в изначальном файле и также отработка идёт не корректно - всё вставляется куда попало. А в файле примере - почему-то всё корректно вставляется. Попытаюсь ещё раз сам разобраться и если не получится - выложу оригинальный файл для разбора.
 
Ответить
Сообщениеnilem, Hugo, Спасибо за помощь.
По поводу Hide - это я признаю детскую ошибку. Я написал всё то же , что и вы (т.е. через With), но перед Range не поставил точку... Всё оказалось элементарно.
А вот с PicCop всё намного интереснее. Hugo, без Select он не отрабатывает так, как нужно - картинка выходит за пределы заданной целевой области. nilem, таким же образом я прописывал код в изначальном файле и также отработка идёт не корректно - всё вставляется куда попало. А в файле примере - почему-то всё корректно вставляется. Попытаюсь ещё раз сам разобраться и если не получится - выложу оригинальный файл для разбора.

Автор - master-dd
Дата добавления - 05.07.2018 в 12:42
Hugo Дата: Четверг, 05.07.2018, 14:30 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2826
Репутация: 637 ±
Замечаний: 0% ±

Да, точно - используются параметры PicRange (сразу не заметил), значит нужно указывать конкретный диапазон, с родителем. Как у nilem.


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
СообщениеДа, точно - используются параметры PicRange (сразу не заметил), значит нужно указывать конкретный диапазон, с родителем. Как у nilem.

Автор - Hugo
Дата добавления - 05.07.2018 в 14:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Обеспечить выполнение макроса без переходов на рабочие листы (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!