Lberteh
Mensagens : 1 Data de inscrição : 16/08/2013
| Assunto: Vários handlers para um mesmo código Sex Ago 16, 2013 3:48 pm | |
| Gostaria de solicitar o auxílio de vocês. Sou inciante no VBA mas fui solicitado pela empresa para que eu automatize uma planilha de trabalho e estou precisando concluir com uma certa urgência. Tento aprender o mais depressa possível porém algumas coisas mais avançadas estou tendo que programar com "dirty code" sem entender exatamente o que estou fazendo. No momento eu empaquei na seguinte questão. Tenho o código abaixo que funciona perfeitamente.
Private Sub Label3_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Label3.ForeColor = vbWhite Label3.SpecialEffect = 1 Label3.BackStyle = 1 Label3.BackColor = &H808000 End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Label3.ForeColor = vbBlack Label3.SpecialEffect = 0 Label3.BackStyle = 0 End Sub
Meu problema é que preciso utilizar exatamente o mesmo código para outras 500 labels (aproximadamente) dentro do mesmo userform. Sei que existe uma forma de fazer isso sem ter que colocar o código individualmente para cada Label, porém até agora não tive sucesso. Alguma solução?
Obrigado! | |
|
alexandrevba
Mensagens : 1820 Data de inscrição : 13/07/2011 Localização : Serra - ES
| Assunto: Re: Vários handlers para um mesmo código Sáb Ago 17, 2013 1:08 am | |
| Boa noite!! Use os laços de repetição... Leia: http://www.ozgrid.com/VBA/control-loop.htm Tente adaptar - Código:
-
Sub AleVBA_I()
For i = 1 To 500 With Sheets("Sheet1") If .Cells(i, "A").Value = "NO DATA" Then _ Me.Controls("Label" & i).BackColor = RGB(200, 200, 200) Me.Controls("Label" & i).Caption = .Cells(i, "A").Value End With Next i
End Sub - Código:
-
Sub AleVBA_II() For i = 1 To 500 Me.Controls("label" & i).Caption = Worksheets("sizing").Range("C" & i + 12) Next
End Sub - Código:
-
Sub AleVBA_III() UserForm2.Show vbModeless Dim theLabel As Object Dim labelCounter As Long
For labelCounter = 1 To 500 Set theLabel = UserForm2.Controls.Add("Forms.Label.1", "Test" & labelCounter, True) With theLabel .Caption = "Test" & labelCounter .Left = 10 .Width = 50 .Top = 10 * labelCounter End With Next End Sub - Código:
-
Private Sub UserForm_Activate()
For q = 0 To 500 Me.Controls("Label" & q).Caption = Range("A1").Offset(q, 0).Value Next q
End Sub Obs: Os exemplos acima, são alheios e difere de sua necessidade, por favor se esfosse em adapta-los! Att | |
|