Изменить размер изображения

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Изменить размер изображения

Re: Изменить размер изображения

pashulka » 06 июн 2015, 14:43

Когда-то присылали мне такой пример, который судя по названию, может Вам подойти :

Pasting from the Clipboard to a Userform Image control (автор Stephen Bullen)

P.S. Сильно "упрощённая" отечественная версия. В отличии от первого варианта, который всегда позволял получить нужный результат, этот, видимо, зависит от версии OC, ибо на старых он меня обламывал ()

Re: Изменить размер изображения

Sadikov » 06 июн 2015, 14:31

Да, это как раз та самая ситуация! Все работает как задумывалось, Вы великий программист мастер pashok/ Скажите , где здесь можно поставить + в реп-ю? Сильно выручили! Дальше буду как то сам, мне теперь надо сделать так, чтобы из буф. обмена была возможность вставлять в эту Форму картинку!!!!

Re: Изменить размер изображения

pashulka » 06 июн 2015, 13:36

Такая версия имелась в разработке, но было маловато доказательств … а если серьёзно, то при определённой ситуации, можно даже так :

Код: Выделить всё

Private Sub CommandButton0_Click() 'Цифра 0
    ActiveCell = ActiveCell & 0
End Sub

Private Sub CommandButton1_Click() 'Цифра 1
    ActiveCell = ActiveCell & 1
End Sub

и т.д.
...
В идеале, конечно же, используя событие UserForm_Initialize, активную ячейку имеет смысл почистить от мусора, а также, установить соответствующий формат, например, числовой или общий (но не текстовый)

P.S. Если же создавать десять событий (для каждой кнопки) не хочется, то здесь можно найти примеры создания массивов элементов, автором которых является Дмит

Re: Изменить размер изображения

Sadikov » 06 июн 2015, 13:08

Все проще, имеется 10 кнопок, как в телефоне и с их помощью в ячейку набирается число!

Re: Изменить размер изображения

pashulka » 06 июн 2015, 12:56

Мы с гуглом, что называется, "теряемся в догадках" касательно того, что есть кнопочный циферблат, применительно к UserForm ... но если абстрагироваться от этого термина и предположить, что в момент выполнения макроса, активная ячейка наличествует, то :

Код: Выделить всё

ActiveCell = 123 'ActiveCell.Value = 123

Re: Изменить размер изображения

Sadikov » 06 июн 2015, 12:30

Уважаемый Мастер pashulka! Это исчерпывающий ответ! Первый способ мне больше глянулся! Не нашел я по форуму как поднимать репутацию, СПАСИБО! Еще есть вопрос, но не знаю, можно ли в этой теме или новую создавать? Суть вопроса как с помощью кнопочного циферблата в данной UserForm осуществить ввод числа в активную ячейку Excel ???

Re: Изменить размер изображения

pashulka » 06 июн 2015, 11:12

Тогда, или перебирать все элементы управления и менять их размеры :

Код: Выделить всё

Private oldHeight!, oldWidth!

Private Sub UserForm_Initialize()
    oldHeight = Me.Height: oldWidth = Me.Width
End Sub

Private Sub UserForm_Resize()
    Dim iControl As MSForms.Control, percHeight!, percWidth!

    percHeight = Me.Height / oldHeight
    percWidth = Me.Width / oldWidth

    For Each iControl In Me.Controls
        With iControl
             'Есть также метод .Move
             .Top = .Top * percHeight
             .Left = .Left * percWidth
             .Height = .Height * percHeight
             .Width = .Width * percWidth
        End With
    Next

    oldHeight = Me.Height: oldWidth = Me.Width 'Or UserForm_Initialize
End Sub
Или же использовать свойство .Zoom. В последнем случае, необходимо учесть, что ширина и высота формы могут меняться непропорциально, например, percHeight = 105 , а percWidth = 150 (в примере я просто выбрал минимум, но это не является обязательным условием)

Код: Выделить всё

Private oldHeight!, oldWidth!

Private Sub UserForm_Initialize()
    oldHeight = Me.Height: oldWidth = Me.Width
End Sub

Private Sub UserForm_Resize()
    Dim percHeight%, percWidth%
    
    percHeight = (Me.Height / oldHeight) * 100
    percWidth = (Me.Width / oldWidth) * 100
    
    Me.Zoom = Application.Min(percHeight, percWidth, 400)
    'В окончательном варианте необходимо учесть, что
    'масштаб должен быть в пределах от 10 до 400
End Sub

Re: Изменить размер изображения

Sadikov » 06 июн 2015, 10:17

Да , все сработало волшебным образом!!! Правда появилась другая проблема - Увеличивающееся изображение начинает перекрывать находящиеся на форме объекты Кнопка. им бы задать некую привязку.....

Re: Изменить размер изображения

pashulka » 06 июн 2015, 09:55

Тогда можно попробовать такой подход :

Код: Выделить всё

Private oldHeight!, oldWidth!

Private Sub UserForm_Initialize()
    oldHeight = Me.Height: oldWidth = Me.Width
End Sub

Private Sub UserForm_Resize()
    With Me.Image1
         .Height = .Height * (Me.Height / oldHeight)
         .Width = .Width * (Me.Width / oldWidth)
    End With
    oldHeight = Me.Height: oldWidth = Me.Width 'Or UserForm_Initialize
End Sub
При ответе не нужно цитировать предыдущее сообщение.

Re: Изменить размер изображения

Sadikov » 06 июн 2015, 09:32

pashulka писал(а):Как изменяются размеры UserForm ?
Форма меняет размеры при помощи мыши простым растягиванием. Код здесь на форуме брал

Вернуться к началу