Visual Basic em Português

Página pessoal de Jorge Paulino sobre o Visual Basic (VB.NET, ASP.NET, VB6, VBA) e algumas noticias de tecnologia

Excel: Utilização de UserForms

O userform é um formulário personalizável que o Microsoft Excel tem disponível para interagir com a folha de cálculo. Aparece sobre a forma modal, ou seja, fica sobreposto à folha cálculo não permitindo qualquer selecção enquanto este estiver aberto. Podem-se colocar nos userforms uma grande quantidade de controlos como textbox, listbox, image, combobox, entre muitos outros ou utilizar alguns activex.

Estes userforms permitem melhorar a utilização das folhas de cálculo quer visualmente quer funcionalmente. Por exemplo, podem utilizar-se no arranque para mostrar informações importantes e/ou permitir seleccionar a folha(worksheet) a abrir ou, como no seguinte exemplo, utilizar para inserir dados.

 

No seguinte exemplo será mostrado como abrir um userform ao ser seleccionada uma determinada área e como inserir dados/comentários através deste.

Para adicionarmos um userform a uma folha de Excel devemos fazer o seguinte:

1 – Menu Tools – Macros – Visual Basic Editor ou ALT+F11 na folha de calculo
2 – Adicionar um novo userform clicando com o botão direito do rato ou através do menu Insert

Ao aparecer o userform e por defeito, aparece uma nova janela toolbox onde estão disponíveis alguns controlos que se podem adicionar a este. É possível ainda adicionar mais como vamos fazer para este exemplo.

3 – Menu Tools – Additional Controls e seleccionar da lista o Microsoft MonthView Control 6.0 (mscomct2.ocx)

4 – Adicionar da Toolbox um MonthView, uma TextBox, duas Labels e dois Botões. Clicando no controlo e seleccionado Properties pode-se alterar o nome, textos, etc (Figura 1). O nome dos botões, ou seja a propriedadename, deverá ficar da seguinte forma:


Limpar = btnLimpar
Inserir = btnInserir

 
   (Figura 1)

5 – Utilizar o seguinte código para os objectos “Sheet1” e “UserForm1”. (Figura 2)


    (Figura 2)


Código para a WorkSheet “Sheet1”

' Quando a selecção/célula é alterada da workcell "Sheet1"
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    ' Verifica se a célula está entre a B2 e B8
    If Not Intersect(Target, Me.[B2:B8]) Is Nothing Then

        ' Cria uma nova instância do nosso UserForm
        Dim frm As New UserForm1

        ' Caso a célula não esteja em branco e seja uma data
        If Target.Text <> "" And IsDate(Target.Text) Then

            ' Define que a data é a que está na célula
            frm.MonthView1.Value = Target.Text

        Else

            ' Define que a data actual do mês é a de hoje
            frm.MonthView1.Value = Date

        End If

        ' Caso tenha algum comentário, coloca-o na textbox
        If Not Target.Comment Is Nothing Then
            frm.TextBox1.Text = Target.Comment.Text
        End If

        ' Mostra o UserForm
        frm.Show

    End If

End Sub

 

Código para o “UserForm1”

' Botão Inserir (ao ser clicado)
Private Sub btnInserir_Click()

    ' Caso exista algum comentário na célula apaga-o
    If Not ActiveCell.Comment Is Nothing Then
        ActiveCell.Comment.Delete
    End If

    ' Caso exista algum texto na textbox insere-o como comentário
    If Me.TextBox1.Text <> "" Then
        ActiveCell.AddComment Me.TextBox1.Text
    End If

    ' Coloca o mês seleccionado na célula
    ActiveCell.Value = Me.MonthView1.Value

    ' Fecha o userform
    Unload Me

End Sub


' Botão Limpeza (ao ser clicado)
Private Sub btnLimpar_Click()

    ' Limpa o texto da textbox
    Me.TextBox1.Text = ""

    ' Coloca a data actual
    Me.MonthView1.Value = Date

End Sub

 

' Quando o UserForm é activado
Private Sub UserForm_Activate()

    ' Coloca uma scrollbar vertical na textbox que será
    ' visível caso o texto seja muito extenso
    Me.TextBox1.ScrollBars = fmScrollBarsVertical

    ' Define que a textbox terá a selecção (focus)
    Me.TextBox1.SetFocus

End Sub

Este exemplo mostra como utilizar os userforms de uma forma geral e como a utilização destes poderá melhor as folhas de cálculo, tornando-as um pouco mais do que uma simples folha de cálculo. As aplicações dos userforms são muitas e simples de conseguir e o limite é a imaginação e criatividade de cada um.

 

PS: Como sempre, qualquer dúvida, comentário ou correcção ao artigo é sempre bem vinda!

7 comentários:

Pedro Mira Vaz disse...

É possível publicar userforms para a web?

Jorge Paulino disse...

Olá Pedro,

Não entendi a questão. Publicar em que aspecto ?

Pedro Mira Vaz disse...

Tenho um ficheiro excle, com um userform, e várias folhas por trás a fazer cálculos. Queria publicar para a web o form, permitindo aos utilizadores do site interagir com o userform.

Obgd pela resposta!

Jorge Paulino disse...

Sinceramente nunca experimentei mas julgo que não deve haver problema algum. Só experimentei em VB.NET, utilizando um webbrowser e funciona bem.

Luiz disse...

POr favor.
Tenho uma sheet com essas informacoes e gostaria de fazelas aparecer num form com as devidas formatacoes.(cor, tamanho, texto).
Nao consigo encontrar no tool box qual a ferramneta que faz isso.só o combo list que nao mostra as formatacoes.
Poderia me ajudar?

carlos henrique disse...

Como faço para entrar direto no Useform (formulario) assim que entramos no arquivo. fiz um formulario de cadastro e queria que ele entrasse automatico??
carlos henrique

Unknown disse...

Carlos Henrique, vide :

http://www.excel-easy.com/vba/userform.html

http://www.fontstuff.com/ebooks/free/fsuserforms.pdf

Att
Lucas Bicalho



Microsoft Office Especialist

Membro da Comunidade
Experts-Exchange


Administ. da Comunidade
Portugal-a-Programar



Twitter

Artigos no CodeProject

Artigos no CodeProject
Google-Translate-ChineseGoogle-Translate-Portuguese to FrenchGoogle-Translate-Portuguese to GermanGoogle-Translate-Portuguese to ItalianGoogle-Translate-Portuguese to JapaneseGoogle-Translate-Portuguese to EnglishGoogle-Translate-Portuguese to RussianGoogle-Translate-Portuguese to Spanish

Subscrever Novidades

Endereço de Email:

Delivered by FeedBurner

Seguidores

Histórico