Manipulação de Form...
 
Notifications
Clear all

[Resolvido] Manipulação de Formulário por variáveis  

  RSS
LeonardoFerrari
(@leonardoferrari)
New Member Registered

Bom dia/tarde/noite a todos.

Antes de tudo, agradeço pela atenção.

Minha dúvida seria em relação à manipulação de formulários no excel utilizando variáveis.

Estou trabalhando em uma aplicação em que possuo alguns formulários com nomes parecidos (como: UserFormR1 / UserFormR2 / UserFormR3) e hora preciso esconder alguns, hora preciso mostrar outros.

Sei que para mostrar e esconder é fácil, basta colocar o nome do formulário e em seguida ".show" ou ".hide"

Ex.: UserFormR1.show

Porém para fins de aplicação eu gostaria de lidar com o nome desses formulários utilizando variáveis, assim a variável teria o nome do formulário gravado e eu utilizaria o ".show" ou ".hide" direto na variável. É possível? Deixarei um exemplo abaixo:

Método atual:

UserFormR1.Show
UserFormR2.Show
UserFormR3.Show

Método desejado: (algo parecido com isso)

Dim form As String

form = "UserFormR1"

form.Show

(obs: tentei o método acima, porém não funcionou)

Agradeço desde já a quem puder ajudar.

 

ResponderCitar (Quote)
Postado : 01/10/2020 3:44 pm
EdsonBR
(@edsonbr)
Honorable Member Moderator

Bem vindo ao nosso Fórum Planilhando, @leonardoferrari!

Userforms são objetos bem atípicos e dão um pouco mais de trabalho para conseguir associá-los a variáveis através de seus nomes, mas ainda assim é possível. Teste o código abaixo num módulo comum e nos dê retorno:

Sub MostraUserFormPeloNome()
  Dim nomeForm As String, objForm As Object, u_f As Object
  nomeForm = "UserFormR1"
  'Caso o UserForm já tenha sido carregado na memória em outras partes do código:
  For Each u_f In UserForms
    If StrComp(u_f.Name, nomeForm, vbTextCompare) = 0 Then
      Set objForm = u_f
      Exit For
    End If
  Next u_f
  'Caso o UserForm exista no Workbook mas não tenha sido carregado ainda:
  If objForm Is Nothing Then
    On Error Resume Next
      Set objForm = UserForms.Add(nomeForm)
    On Error GoTo 0
  End If
  If Not objForm Is Nothing Then
    objForm.Show
  Else
    MsgBox (nomeForm & "? >>> ISSO NÓN ECZISTE!!!")
  End If
End Sub
 

 

ResponderCitar (Quote)
Postado : 02/10/2020 1:19 am
LeonardoFerrari
(@leonardoferrari)
New Member Registered

@edsonbr

 

Muito Obrigado Edson, funcionou certinho, era o que eu precisava.

ResponderCitar (Quote)
Postado : 05/10/2020 7:40 am