2014-09-16 5 views
0

Я создал UserForm, который состоит из 2 CommandButtons, каждый из которых содержит изображение. Пользователю предлагается выбрать один из двух CommandButtons. Я хотел бы, чтобы имя выбранного изображения было скопировано в ячейку на листе. На данный момент я не могу понять, как получить имя файла изображения, и поэтому я вручную вставить имя файла для каждого CommandButton, как таковой:VBA UserForm Получить имя файла

Private Sub cmdQ2Opt1_Click() 
    Worksheets("UserQuestionnaire").Range("C4").Value = "242.216.490" 
End Sub 

Private Sub cmdQ2Opt2_Click() 
    Worksheets("UserQuestionnaire").Range("C4").Value = "354.129.401" 
End Sub 

Как я могу закодировать это так, что VBA автоматически копирует имя файла изображения?

Заранее благодарим за помощь!

ответ

1

Если вы назначаете изображение в Forms Designer, то путь не сохраняется, поскольку изображение затем загружается из хранилища в самой книге.

Чтобы сохранить путь, который вы загружаете во время выполнения:

dim path As string 
path = "C:\...\foo.jpg" 
set commandbutton1.Picture = loadpicture(path) 

Вы можете сохранить путь в кнопках Tag свойства:

commandbutton1.Tag = path 

Тогда прочитайте его обратно, когда его щелкнули:

ActiveWorkbook.Sheets("UserQuestionnaire").Range("C4").Value = commandbutton1.Tag 
+0

Спасибо за это - я немного новичок в VBA, так что не могли бы вы прояснить, что вы меня по нагрузке во время выполнения? Могу ли я адаптировать этот код к модулю Class Module, Module или UserForm в качестве обычного Private Sub? –

+0

Я имею в виду, если вы поместите изображение в кнопку, перейдя к файлу изображения в окне свойств кнопок, вы не сможете получить его путь назад для дальнейшего использования в другом месте, так что вместо этого вы загружаете изображение в кнопку, когда вам это нужно (или в событие инициализации пользовательской формы) –

+0

Понял. Спасибо. Есть ли способ сделать то же самое, не обращаясь к пути к файлу и вместо этого вставляя изображение в файл? Я беспокоюсь, что обращение к определенному пути будет означать, что кнопки не будут работать, когда я отправлю файл другим, у которых нет доступа к пути. –