Ola Pessoal,
Com a ajuda de um bocado de gente ( Edson, Basole, Mauro, Tomas e alguns fóruns internacionais) consegui fazer uma rotina para criar objetos em tempo de execução.
Porém, as rotinas que são criadas (associadas ao evento do MOUSE) não funcionam.
Ou seja, eu estou criando IMAGENS em tempo de execução, e ao mesmo tempo criando uma rotina para estar associadas a estas imagens. TUDO É CRIADO corretamente, porém a rotina que mudaria as IMAGENS de lugar conforme eu for mexendo o MOUSE não funciona.
Para ilustrar tudo isso coloco em anexo um modelo e abaixo como ficou a rotina:
Private Sub CommandButton80_Click()
Dim x As Integer
Dim TempForm As Object
Dim Line As Integer
Dim MyScript(4) As String
Set TempForm = ThisWorkbook.VBProject.VBComponents("Userform1")
x = Frame1.Controls.Count + 1
Set xxx = Frame1.Controls.Add("Forms.Image.1", "NIMAGE" & x)
xxx.Top = 30
xxx.Left = x * 58
xxx.Height = 72
xxx.Width = 54
xxx.BorderStyle = 0
xxx.BackColor = &HFFFFFF
TextBox1 = xxx.Name
'===============================
For x = 0 To 9
With TempForm.codemodule
Line = .countoflines
MyScript(0) = "Private Sub NIMAGE" & x + 1 & "_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)"
MyScript(1) = "If Button = 1 Then"
MyScript(2) = "NIMAGE" & x + 1 & ".left = (NIMAGE" & x + 1 & ".left - xx)+x"
MyScript(3) = "NIMAGE" & x + 1 & ".top = (NIMAGE" & x + 1 & ".top - yy)+y"
.insertlines Line + 3, MyScript(0)
.insertlines Line + 4, MyScript(1)
.insertlines Line + 5, MyScript(2)
.insertlines Line + 6, MyScript(3)
.insertlines Line + 7, "End if"
.insertlines Line + 8, "End Sub"
End With
Next
For x = 0 To 9
With TempForm.codemodule
Line = .countoflines
MyScript(0) = "Private Sub NIMAGE" & x + 1 & "_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)"
MyScript(1) = "If Button = 1 Then"
MyScript(2) = "xx = x"
MyScript(3) = "yy = y"
.insertlines Line + 3, MyScript(0)
.insertlines Line + 4, MyScript(1)
.insertlines Line + 5, MyScript(2)
.insertlines Line + 6, MyScript(3)
.insertlines Line + 7, "End if"
.insertlines Line + 8, "End Sub"
End With
Next
End Sub
FONTE: http://www.tek-tips.com/faqs.cfm?fid=5757
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 05/12/2016 12:08 am