Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне? / 25 сообщений из 54, страница 1 из 3
17.01.2010, 22:51
    #36414952
NadyaP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
Добрый вечер! Пожалуйста, подскажите, как сделать в Excel следующее:
Есть таблица с картинками небольшого размера и данными к каждой картинке. Необходимо, чтобы при нажатии (либо при наведении) на картинку она увеличивалась в отдельном окне. Заранее спасибо.
...
Рейтинг: 0 / 0
17.01.2010, 23:08
    #36414966
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
NadyaP,

а что не получается?
...
Рейтинг: 0 / 0
18.01.2010, 09:04
    #36415208
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
NadyaP,

сделайте UserForm c PictureBox и в нем отображайте увеличенную картинку.
...
Рейтинг: 0 / 0
18.01.2010, 19:55
    #36416761
NadyaP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
В VB я новичок. Так что, если можно, объясните подробнее, что делать.
Один вариант представляю себе так:
На лист Excel добавила объект Image1 с маленькой картинкой, например, при одном Click должна открываться UserForm (большое окно с той же картинкой). То есть UserForm_Activate ().
...
Рейтинг: 0 / 0
18.01.2010, 22:34
    #36416930
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
NadyaP,

ну если по простому, то можно сделать так,

1. Создать форму, в нее поместить картинку увеличенного размера как Image (если это будет стационарная картинка).
2. Создать макрос который будет эту форму показывать. Показывает форму команда

Код: plaintext
1.
UserForm1.Show  ' где UserForm1 имя Вашей формы. По умолчанию UserForm1

3. Миниобразец картинки поместить на лист просто копированием из любого источника (например графического редактора)
4. Повесить на него макрос, который показывает Вашу форму. (правой кнопкой мыши назначить макрос)

Но Вам наверняка нужно более чем одну картинку показывать. Если количество картинок больше 3-5 ти штук, то мой способ не кошер, много делать руками.
Но и помочь Вам без более подробного описания задачи нельзя.
...
Рейтинг: 0 / 0
19.01.2010, 01:13
    #36417034
NadyaP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
Shamanus, спасибо большое.

Но что делать, если картинок много?
...
Рейтинг: 0 / 0
19.01.2010, 12:09
    #36417658
Shamanus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
NadyaP,

я же написал:
нужно подробнее описать задачу, сколько картинок примерно, где находятся изначально, размер, назначение файла и т.п.
Без этого сложно решить задачу.

Если например это прайс отправляемый покупателям, то внешнюю папку для подзагрузки картинки использовать нельзя, только хранить картинку в самом файле.
...
Рейтинг: 0 / 0
19.01.2010, 20:42
    #36419085
NadyaP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
Shamanus,

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


А текущий вопрос: UserForm1.Show использую, чтобы при наведении курсором окно появилось, а какой командой скрыть появившееся окно?
Подскажите, чем удобно пользоваться, кроме встроенного Help.
...
Рейтинг: 0 / 0
20.01.2010, 07:54
    #36419464
.Михаил.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
NadyaPА текущий вопрос: UserForm1.Show использую, чтобы при наведении курсором окно появилось, а какой командой скрыть появившееся окно?

Код: plaintext
UserForm1.Hide
...
Рейтинг: 0 / 0
20.01.2010, 11:45
    #36419988
NadyaP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
Михаил, спасибо
...
Рейтинг: 0 / 0
20.01.2010, 12:23
    #36420106
NadyaP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
Михаил, подскажите, пожалуйста,


Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

ЧТО НАПИСАТЬ ЗДЕСЬ?????

UserForm1.Show

Else
UserForm1.Hide

End If

End Sub
...
Рейтинг: 0 / 0
20.01.2010, 12:28
    #36420129
Игорь Горбонос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
> Автор: NadyaP
> ЧТО НАПИСАТЬ ЗДЕСЬ?????

Что бы что произошло?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
20.01.2010, 13:54
    #36420413
.Михаил.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
NadyaPМихаил, подскажите, пожалуйста,


Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

ЧТО НАПИСАТЬ ЗДЕСЬ?????

UserForm1.Show

Else
UserForm1.Hide

End If

End Sub
Например это
Код: plaintext
1.
2.
3.
4.
5.
If ( 10  <= X And X <= Image1.Width -  10 ) And ( 10  <= Y And Y <= Image1.Height -  10 ) Then
    UserForm1.Show
Else
    UserForm1.Hide
End If
Конечно, подход не профессиональный, а что делать - MouseMoveOver и MouseMoveOut отсутствуют, зато очень простой. В при этой реализации мышкой по Image1 очень быстро двигать нельзя, форма может не исчезнуть. Применимая в примере цифра 10 может быть изменена на другую, это зависит от размеров Image1 и пожелания автора.
...
Рейтинг: 0 / 0
20.01.2010, 16:54
    #36421019
NadyaP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
.Михаил.,

попробовала, как вы советуете - форма появляется, как и раньше без цикла, и не исчезает, хотя я меняла 10 на меньшие и большие значения.
...
Рейтинг: 0 / 0
20.01.2010, 18:51
    #36421306
.Михаил.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
NadyaP,
попробуйте свойство вашей формы изменить так
Код: plaintext
UserForm1.ShowModal = False
...
Рейтинг: 0 / 0
20.01.2010, 19:31
    #36421379
NadyaP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
.Михаил.,
не работает - ShowModal не найден.
...
Рейтинг: 0 / 0
20.01.2010, 19:35
    #36421387
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
.Михаил.
Код: plaintext
1.
2.
3.
4.
5.
If ( 10  <= X And X <= Image1.Width -  10 ) And ( 10  <= Y And Y <= Image1.Height -  10 ) Then
    UserForm1.Show
Else
    UserForm1.Hide
End If
Конечно, подход не профессиональный, а что делать - MouseMoveOver и MouseMoveOut отсутствуют, зато очень простой. В при этой реализации мышкой по Image1 очень быстро двигать нельзя, форма может не исчезнуть. Применимая в примере цифра 10 может быть изменена на другую, это зависит от размеров Image1 и пожелания автора.


А я вот лично вообще не врубаюсь, у вас Image1 где находится? Если на UserForm1, то UserForm1.Show в принципе сработать не может ибо, событие никогда не возникнет. А если не на форме, то где?
...
Рейтинг: 0 / 0
20.01.2010, 21:00
    #36421491
.Михаил.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
Shocker.Pro
А я вот лично вообще не врубаюсь, у вас Image1 где находится? Если на UserForm1, то UserForm1.Show в принципе сработать не может ибо, событие никогда не возникнет. А если не на форме, то где?
Image1 [с уменьшеным изображением] находится на листе, при наведении не него курсором должна появляться форма UserForm1, на которой будет свой Image [с увеличеным изображением].
NadyaP
не работает - ShowModal не найден.
в редакторе VBA выберите UserForm1 и в окне Properties измените свойство ShowModal на значение False
...
Рейтинг: 0 / 0
20.01.2010, 21:25
    #36421522
NadyaP
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
.Михаил.,
спасибо большое - все получилось!

А что делать, если много картинок в таблице и нужно, чтобы они появлялись и исчезали?
...
Рейтинг: 0 / 0
20.01.2010, 22:05
    #36421590
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
.Михаил.Image1 [с уменьшеным изображением] находится на листе, при наведении не него курсором должна появляться форма UserForm1, на которой будет свой Image [с увеличеным изображением].

Но картинок много. Вы предлагаете под каждую создавать контейнер в виде Image1(n)?

А как это будет делать пользователь, который наполняет файл картинками? (впрочем, вопрос наполнения не поднимался)

Я сам не очень силен в VBA (все больше по VB), в экселе сам лист иметт какие-то события, в частности MouseOver?
...
Рейтинг: 0 / 0
21.01.2010, 06:04
    #36421831
.Михаил.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
NadyaP
Должен быть один файл, содержащий в одном столбце около 400 рисунков, в соседнем описание, может быть, будут еще столбцы. Картинки будут легкие (схематично нарисованные детали), хорошее качество не требуется - главное при увеличении должно быть понятно, что нарисовано.
Картинки должны хранится в самом файле. При наведении на картинку она появляется увеличенная в отдельном окне, курсор убираем - исчезает.
Shocker.Pro
Но картинок много. Вы предлагаете под каждую создавать контейнер в виде Image1(n)?
А как это будет делать пользователь, который наполняет файл картинками? (впрочем, вопрос наполнения не поднимался)

Да, картинок много, около 400. Значит на листе будет ImageN, где N = от 1 до 400. Для каждого ImageN нужно будет описывать событие
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If ( 10  <= X And X <= Image1.Width -  10 ) And ( 10  <= Y And Y <= Image1.Height -  10 ) Then
    ' запуск некой функции
Else
    UserForm1.Hide
End If
End Sub
...
Private Sub Image2_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)...
...
Private Sub Image400_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
В описании каждого события при выполнении описанного выше условия должна запускаться некая функция (процедура) с входным параметром - путь к увеличенному файлу-картинки. Эта функция должна показывать форму UserForm1 и загружать картинку в Image, находящийся на форме UserForm1. При невыполнении условия - форма должна скрываться... Вот так, это мое видение, то как это можно реализовать.
Если просто добавить картинку на лист Excel, то... короче, она "не имеет" событий.
Может можно как-нить картинку "засунуть" в комментарий (Comment) ???
Shocker.Pro
Я сам не очень силен в VBA (все больше по VB), в экселе сам лист иметт какие-то события, в частности MouseOver?
Лист Excel не имеет событий, связяанных с "движением курсора мыши".
...
Рейтинг: 0 / 0
21.01.2010, 10:08
    #36422026
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
.Михаил.
Да, картинок много, около 400. Значит на листе будет ImageN, где N = от 1 до 400. Для каждого ImageN нужно будет описывать событие

А почему не использовать одно событие и массив контролов? В VBA такого нет?
...
Рейтинг: 0 / 0
21.01.2010, 11:28
    #36422262
.Михаил.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
Shocker.ProА почему не использовать одно событие и массив контролов? В VBA такого нет?
Есть, но я мало разбираюсь в этом
Нужно в проект вставить модуль класса и назвать его ImageMyMoveClass и ввести следующий код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public WithEvents ImageGroup As msforms.Image
Private Sub ImageGroup_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If ( 10  <= X And X <= ImageGroup.Width -  10 ) And ( 10  <= Y And Y <= ImageGroup.Height -  10 ) Then
    UserForm1.Image1.Picture = ImageGroup.Picture ' это хз может не работать, но... идея такая
    UserForm1.Show
Else
    UserForm1.Hide
End If
End Sub
потом создать модуль и поместить туда это
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Option Explicit
Public MyImages( 1  to  400 ) As New ImageMyMoveClass
Public Sub MyStart()
Set MyImages( 1 ) = Image1
Set MyImages( 2 ) = Image2
'...
Set MyImages( 400 ) = Image400
End Sub
Конечно, 400 строк это не совсем красиво, просто надо подумать и сделать по другому, это только для наглядности.
Далее так
Код: plaintext
1.
2.
3.
Private Sub Workbook_Open()
MyStart
End Sub
или самому запускать MyStart или как-нить по другому. MyStart обязательно должна быть запущена.
Свойство Image1, который на форме UserForm1, PictureSizeMode = 1 - fmPictureSizeModeClip
Свойство ImageN, которые на листе, PictureSizeMode = 3 - fmPictureSizeModeZoom
...
Рейтинг: 0 / 0
21.01.2010, 11:51
    #36422329
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
.Михаил.
Есть, но я мало разбираюсь в этом

Ну тогда лучше сначала разобраться :)
Потому что если можно сделать массив однотипных контролов, ваш код становится резко не нужен
...
Рейтинг: 0 / 0
21.01.2010, 13:02
    #36422579
.Михаил.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне?
Shocker.Pro
Ну тогда лучше сначала разобраться :)
Потому что если можно сделать массив однотипных контролов, ваш код становится резко не нужен
Этот код не я придумал, а взял из книжки по VBA в Excel. У меня в Excel все работает. Если есть другие предложения... пожалуйста.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как в Excel сделать, чтобы при нажатии на картинку она увеличивалась в отдельном окне? / 25 сообщений из 54, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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