Лучший способ отобразить уменьшенное изображение и разместить его в пользовательской форме Excel VBA? - PullRequest
0 голосов
/ 19 января 2019

Я хотел бы иметь немодальную пользовательскую форму, которая при загрузке отображает уменьшенное изображение на основе имени файла, найденного в данном столбце активной строки электронной таблицы. Основным мотивом для меня является возможность просматривать сканы отдельных марок в моей коллекции марок, которые я каталогизировал в книге Excel и которые хранятся в папке на моем компьютере.

Я искал решения здесь и на других веб-сайтах и ​​пришел к следующему образцу кода, который делает более или менее то, что я хочу, но он немного неуклюжий, и я надеялся на некоторые предложения по его улучшению. Следующее должно работать при вставке в окно кода пользовательской формы, содержащей командную кнопку и элемент управления изображением в стандартной макрокоманде Excel, при условии, что вы измените имя файла моего изображения на действительное имя файла изображения на компьютере, который вы используете для запустите это:

Private Sub UserForm_Initialize()
    Image1.Visible = False
    Me.Picture = LoadPicture("C:\Users\Geoff\Documents\stamps\images\US_1207_37862.jpg")
End Sub

Private Sub CommandButton1_Click()

    With Image1
        .AutoSize = False
        .Picture = LoadPicture("C:\Users\Geoff\Documents\stamps\images\US_1207_37862.jpg")
        .AutoSize = True
        UserForm1.Height = (.Height / 2)
        UserForm1.Width = (.Width / 2)
        .Picture = Nothing
    End With
    UserForm1.PictureSizeMode = fmPictureSizeModeZoom
    UserForm1.PictureAlignment = fmPictureAlignmentCenter

End Sub

Когда вы запускаете форму, скажем, набрав «userform1.show» в ближайшем окне, изображение отображает то, что когда-либо случайная часть вписывается в любой случайный размер, который вы создали форму. Когда вы нажимаете командную кнопку, код использует элемент управления изображением, чтобы определить ширину и высоту изображения, обрезает эти значения пополам и соответственно изменяет размеры формы, а также использует два свойства, перечисленных выше, чтобы масштабировать и центрировать изображение, чтобы оно соответствовало размеру. форма. Пример кода события CommandButton1_Click - это то, что я предполагаю добавить в событие Worksheet_SelectionChange моей электронной таблицы, содержащей мой каталог марок и список имен файлов, а также условие для обхода кода, если форма не видна, и т. Д. Спасибо, что нашли время для Посмотрите на это и для любых комментариев, которые вы можете предложить мне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...