Se a imagem é definida diretamente na Janela Propriedade, não tem como capturar o caminho nem o nome, desta forma a imagem fica como se estivesse anexada permanentemente, por isso que quando abrimos o arquivo em outro PC não temos erro de não ter localizado a imagem.
Sendo definida atraves de Rotina, precisamos saber :
"Toda vez que inicializado o userform, esse commandbutton aparece com uma picture diferente"
Qual a Instrução utilizada para carregar a Imagem ?
Na Rotina Abaixo é definido a Imagem do CommandButton1, ou seja, temos na mesma o Caminho e o nome, ao final temos a instrução que armazena em uma Variável somente o Nome da Imagem.
Private Sub UserForm_Initialize()
Dim str As String
Dim sSplitBarras() As String
Dim total As Integer
Dim sNomeArquivo As String 'Nome do Arquivo de Imagem
With Me.CommandButton1
'Localiza a Imagem no diretorio e associa ao CommandButton
.Picture = LoadPicture("C:Documents and SettingsMauroMeus documentosMinhas imagensIMAGEM1.JPG")
.PicturePosition = fmPicturePositionAboveCenter
'Variavel do Caminho da Figura
str = ("C:Documents and SettingsMauroMeus documentosMinhas imagensIMAGEM1.JPG")
'Remove as "" do caminho
sSplitBarras = Split(str, "")
'Total das ""
total = UBound(sSplitBarras)
'VARIAVEL (sNomeArquivo) - somente com o Nome do arquivo da Imagem
sNomeArquivo = sSplitBarras(total)
MsgBox "O nome da Imagem do Botão é : " & sNomeArquivo
End With
End Sub
Como poderia alterar o name do botão inserido em um userform, via código vba? Depois como faria para ler esse nome via vba?
Você está se referindo ao NAME ou CAPTION ?
Veja na Rotina abaixo a diferença :
Private Sub CommandButton3_Click()
Dim MyControl As Control
For Each MyControl In Controls
'Propriedada Name - Nome que deu ao CONTROLE, ou seja, trocou:
'CommandButton2 por um cmbMeuBotao por exemplo
MsgBox "MyControl.Name = " & MyControl.Name
'Propriedade Caption - Nome que deu ao Botão
MsgBox "MyControl.Name = " & MyControl.Caption
Next
End Sub
Lembrando, que quando definimos um NAME a um CommandButton temos algumas instruções associadas ao mesmo, então se tenho no meu Formulário um Botão com o NAME CommandButton1 , se der dois cliques no mesmo teremos :
Private Sub CommandButton1_Click()
'Instruções.....
'Instruções........
End Sub
Desta forma se eu alterar o NAME do CommandButton1 para cmbMeuBotão no formulário terá de alterar o NAME na Rotina tambem.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 15/09/2013 4:44 pm