Upload
eng-wanders-miller
View
314
Download
3
Embed Size (px)
1
Microsoft Excel VBA Fact Sheet: Build a UserForm for Excel
© Martin Green www.fontstuff.com
Tradução/Adaptação: Paulo Costa – www.e-dicas.blogspot.com
Construir um Formulário em VBA para Excel
Introdução Um formulário é uma janela de diálogo personalizada que se constrói utilizando o Editor de Visual Basic.
Este exemplo é construído em Excel mas pode ser utilizado em qualquer outro programa que suporte
VBA.
Com um formulário poderá criar um interface amigável para o seu livro ou documento, tornando assim
mais controlável para si e mais simples para o utilizador.
Sobre o projecto Este documento mostra como construir um simples formulário para inserir dados pessoais sobre despesas numa folha de cálculo. O trabalho está dividido em duas secções principais: a construção do formulário em si e de seguida, escrever o código VBA para que ele funcione. O formulário final será parecido com a imagem seguinte (Fig.1).
Fig. 1 – O projecto de Formulário terminado.
2
NOTA: as imagens aqui apresentadas mostram como são as janelas na versão Excel 2010 a correr num
sistema operativo Windows Vista. Se estiver a trabalhar numa outra versão do Excel ou noutro sistema
operativo a diferença será pequena, mas todas as técnicas explicadas serão exactamente iguais.
Construir o Formulário Inicie o Excel e abra o Editor de Visual Basic (atalho de teclado: [Alt]+[F11]). Irá necessitar das janelas do
Project Explorer e Properties Window por isso, se não estivem visíveis coloque-as através do Menu
View.
DICA: ao construir o seu formulário tente evitar o duplo clique em qualquer objecto a menos que as
instruções o indiquem), porque isso por vezes abre a janela de código do formulário. Se isso acontecer
acidentalmente, simplesmente feche a janela do código no botão fechar ou volte à janela do Formulário
com o atalho de teclado [Control]+[Tab].
Inserir um novo Formulário Certifique-se que o actual livro de trabalho (por exemplo, VBAProject(Livro1)) está seleccionado na
janela Project Explorer. De seguida abra o menu Inserir e escolha UserForm. Quando fizer isso um novo
formulário em branco irá surgir na janela de código do Editor de Visual Basic e uma entrada
correspondente surgirá na janela Project Explorer (Fig.2). Nesta janela verá uma nova pasta chamada
Forms contendo o novo formulário ao qual foi atribuído o nome de UserForm1.
A barra ToolBox (Fig.3) deverá estar visível caso contrario, clique algures no Formulário (O Editor de
Visual Basic esconde a ToolBox quando acha que estamos a trabalhar noutro objecto) e se mesmo assim
ainda não estiver visível abra-o através do menu View.
Fig. 3 - A janela Project Explorer mostra o formulário.
Fig. 2 - A ToolBox
3
O Formulário tem um limite pontilhado ao seu redor. No contorno, no canto inferior direito e a meio da
aresta inferior e do lado direito do formulário, existem pequenos quadrados brancos. Estes são as alças
de redimensionamento. Poderá utilizar o rato para agarrar e arrastar de forma a redimensionar para o
tamanho necessário. A grelha de pontos no interior do formulário serve para ajudar a alinhar os
objectos facilmente.
Renomear o Formulário e adicionar um título Um projecto simples pode incluir vários formulários por isso é boa ideia dar a cada um nome
significativo. Com o formulário seleccionado procure a propriedade Name na janela Properties Window
(é normalmente a primeira propriedade da lista) e altere-o para frmDespesas. De seguida altere a
propriedade Caption para Despesas Pessoais. A janela Project explorer mostra agora o novo nome do
formulário e a barra de título mostra a nova propriedade caption (Fig.4).
Quando nomear formulários e os seus controlos lembre-se que não pode incluir espaços ou alguma das
“palavras reservadas” (i.e. aquelas palavras que fazem parte da linguagem do VBA tal com “Date”).
Adicionar o controlo Caixa de Texto e um Rotulo Os controlos são objectos, como caixa de texto, caixa de combinação e botões de comando, que serão
inseridos no formulário. A selecção dos controlos é feita nos botões da ToolBox. Aponte para os botões
da Toolbox para ver a legenda de cada um deles.
Adicione uma caixa de texto ao formulário, clicando no respectivo botão1 e depois clique mais ou menos
no centro do formulário. Assim como nos próprios formulários, os controlos possuem um contorno
pontilhado e alças de redimensionamento, isto quando o objecto está seleccionado (clique num objecto
para o seleccionar).
Poderá alterar o tamanho e a forma do controlo, quer agarrando e arrastando as alças de
redimensionamento (o ponteiro do rato mudará para uma dupla seta (Fig. 5)) quer alterando os valores
das propriedades Height e Width na janela Proprieties Window. Para mover um controlo agarre no
limite pontilhado (o ponteiro do rato mudará para uma cruz bidireccional (Fig. 6)) ou altere os valores
das propriedades Top e Left.
1 TextBox
Fig. 4 - A barra de título do formulário mostra a nova legenda
4
Arraste a caixa de texto para perto do topo e mais ou menos centrado no formulário.
Cada controlo deverá ter um nome suficientemente identificativo de modo a que quando estiver a
escrever o código possa facilmente identifica-los. Este controlo em particular tem o nome predefinido
de TextBox1. Utilize a janela Properties Window para mudar o nome para txtnome.
DICA: Quando atribuir nomes aos controlos é útil adicionar um prefixo descritivo do tipo de controlo
(“txt” para as caixas de texto, “cbo” para caixas de combinação, et.). Isto permite lembra-lo qual o tipo
de controlo quando estiver a trabalhar com o código. Permite também forçar a que os nomes
apareceram agrupados quando vistos numa lista ordenada. Alem disso também permite utilizar palavras
que isoladas não são permitidas. (ex. txtDate em vez de Date).
Agora utilize a TollBox para inserir um rótulo2 no formulário. Para alterar a legenda do rótulo poderá
digitar directamente no rótulo ou mudar na janela Properties Window. Mude a legenda para Nome:.
Mude a propriedade TextAlign do rótulo para 3-fmTextAlignRight e de seguida dê um duplo clique na
alça de redimensionamento do canto inferior direito, de modo a ajustar a dimensão ao texto (Fig. 7).
Arraste o rótulo de modo a ficar à esquerda da caixa de texto, Nome.
Fig. 7 - Duplo clique na alça do canto inferior direito para ajustar o tamanho do rotulo
Quando arrasta os controlos no formulário estes são automaticamente ajustados à grelha de pontos.
Embora esta seja um recurso útil, por vezes podemos necessitar de maior precisão. Pode verificar que
não consegue colocar o rótulo exactamente ao centro da caixa de texto. A grelha força-o a ficar acima
ou abaixo. Utilize a janela Properties Window para subtrair (ou adicionar caso seja necessário) 3
unidades à propriedade Top do rótulo, de forma a posicionar correctamente com a caixa de texto (Fig.
8).
2 Label
Fig. 6 - Redimensionar um controlo
Fig. 5 - Mover um controlo
5
Fig. 8 - Utilize a janela Properties Window para ajustar a posição final do controlo
Não é necessário dar um novo nome ao rótulo porque não nos vamos referir a ele neste projecto.,
noutras circunstâncias poderá ser necessário.
Adicionar os restantes controlos Utilize as mesmas técnicas para adicionar os restantes controlos ao formulário. Precisa adicionar quatro
caixas de texto, uma caixa de combinação (caixa de texto com uma lista pendente), uma caixa de
verificação e três botões de comando. Segue a lista dos controlos em falta e as suas propriedades:
Caixa de texto ................ Name: txtapelido Rotulo ............................. Caption: Apelido: Caixa de combinação ..... Name: cboDepartamento Rotulo ............................. Caption: Departmento: Caixa de texto ................ Name: txtData Rotulo ............................. Caption: Data: Caixa de texto ................ Name: txtquantia Rotulo ............................. Caption: Quantia: Caixa de Verificação ....... Name: chkRecibo, Caption: Recibo? Caixa de texto ................ Name: txtDescricao, Height:45, Width:132, scrollbars: 2-fmScrollbarsVertical Rotulo ............................. Caption: Descrição: Botão de comando ......... Name: cmdOK, Caption: OK Botão de comando ......... Name: cmdLimpar, Caption: Limpar Botão de comando ......... Name: cmdCancelar, Caption: Cancelar DICA: A qualquer altura poderá verificar qual o aspecto que o formulário está a tomar, bastando para isso pressionar a tecla [F5] ou clicando no botão Run da barra de ferramentas do Editor de Visual Basic. Ao fazer isso irá surgir o formulário no programa hospedeiro (neste caso o Excel). Para voltar ao Editor de Visual Basic, feche o formulário, clicando no botão [x] no canto superior direito.O formulário quando concluído deverá ser similar à imagem seguinte (Fig. 9):
Fig. 9 - O Formulário concluído em vista esquema de formulário (esquerda) e em uso (direita)
6
Criar a lista para a caixa de combinação A caixa de escolha do Departamento, precisa agora que lhe seja atribuída a lista que deve apresentar.
Há duas maneiras de fazer isso. Pode ser feito através de código (este método está descrito na secção
seguinte) ou podemos indicar uma área nomeada do livro. Este último método é o mais utilizado porque
podemos editar a lista facilmente sem necessidade de reescrever código algum.
Mude para o Excel seleccione uma folha do mesmo livro. Escreva numa coluna os elementos que deseja
que surjam na lista da caixa de combinação. Coloque um elemento em cada célula. Se desejar que os
elementos aparecem ordenados alfabeticamente, ordene os elementos na própria folha de cálculo.
Agora seleccione as células que vão dar origem à lista de opções e atribua-lhes um nome. A maneira
mais fácil é clicar na caixa de nome (mesmo por cima da célula A1), escreva o nome Departamentos,
(Fig. 10) clicando de seguida na tecla [Enter]. Clique numa célula qualquer da folha de cálculo e
verifique se atribui o nome correctamente, clicando na seta preta da caixa de nome e seleccione o nome
Departamentos. Deverá visualizar o conjunto de células já seleccionadas.
Se precisar adicionar elementos à lista, poderá necessitar redefinir a sua lista. Poderá fazer isso, no
Menu Inserir escolha a opção Nome e Definir3. Volte ao Editor de Visual Basic e clique na caixa de
combinação, Departamento, para o seleccionar e de seguida aceda à janela Propreties Window e
localize a propriedade RowSource. Introduza o mesmo nome que atribuiu ao intervalo de células (neste
exemplo Departamentos).
Verifique o formulário (clique na tecla [F5]) e verifique se já surge a sua lista (Fig. 11).
Verificar a ordem de tabulação Muitas pessoas gostam de usar a tecla [Tab] para se movimentarem nos elementos de um formulário. A
ordem que a tecla Tab segue a ordem com que são inseridos os controlos n o formulário.
3 No MS Excel 2007/2010 – No separador Formulas e gestor de Nomes, seleccione o nome dado e clique
em editar.
Fig. 10 – Atribui um Nome ao intervalo de células da lista
Fig. 11 - A caixa de combinação mostra a lista
7
Execute o formulário (abra-o em Excel) e começando na caixa de texto, Nome, pressione a tecla [Tab]
repetidamente e verifique se segue a ordem logica. Se desejar mudar a ordem, feche o formulário e no
Editor de Visual Basic, clique no menu View e escolha a Tab Order. Aqui poderá mover os itens na lista
para cima e para baixo, de modo a controlar a comportamento da tecla [Tab] no formulário (Fig. 12).
Fig. 12 –A janela Tab Order
Escreva o Código VBA O esquema do formulário está agora pronto. O próximo passo é escrever o código VBA para que
funcione. É necessário código para cada um dos botões…
Código para o botão cancelar O botão Cancelar é o mais fácil de codificar. Terá de fazer o mesmo que faz o botão integrado ([X]), no
canto direito superior do formulário.
Duplo clique no botão de comando cmdCancelar (ou um clique com a tecla direita e escolha a opção
View Code) para abrir o módulo de código do formulário. O Editor de Visual Basic vai mostrar já as
linhas Sub e End Sub do evento Click. Coloque o seu cursor no espaço vazio entre estas linhas, pressione
a tecla [Tab] e escreva a seguinte linha:
Unload Me
O seu código deverá ser igual ao seguinte (Listagem 1):
Listagem 1
Private Sub cmdCancelar_Click()
Unload Me
End Sub
Teste o código. Clique no menu Debug e escolha a opção Compile VBAProject. Se obtiver uma
mensagem de erro verifique a escrita do código e compile o código de novo. De seguida mude para a
vista esquema de formulário (pressione [Control]+[Tab] ou dê um duplo clique no nome do formulário
na janela Project Explorer). Pressione a tecla [F5] para executar o formulário em Excel. Clique no Botão
Cancelar e o formulário deverá fechar. Volte ao Editor de Visual Basic.
8
Código para o botão Ok O Botão Ok tem de realizar três tarefas. Tem de:
1. Verificar se todas as informações foram fornecidas pelo utilizador (isto é chamado de validação).
2. Escrever os dados na folha de cálculo.
3. Apagar os dados do formulário para poder introduzir nova informação.
Na vista esquema de formulário dê um duplo clique no botão cmdOk e insira as linhas seguintes no
procedimento cmdOk_Click (Listagem 2):
Listagem 2
Private Sub cmdOK_Click()
If Me.txtnome.Value = "" Then
MsgBox "Por favor, insira um Nome.", vbExclamation, "Despesas
pessoais"
Me.txtnome.SetFocus
Exit Sub
End If
End Sub
Este procedimento utiliza uma instrução If para verificar o conteúdo da caixa de texto txtnome. Se a
caixa de texto estiver vazia (i.e. o seu conteúdo é “” – duplas aspas significam “nada”) uma mensagem é
mostrada e o foco é direccionado para essa caixa de texto (o cursor é colocado nessa caixa de texto) e o
procedimento é cancelado.
Como anteriormente, teste e compile o código. Abra o formulário e sem preencher a caixa de texto Nome, clique no botão OK. Deverá visualizar a mensagem de erro (Fig. 13). Feche a mensagem de erro e de seguida preencha a caixa de texto Nome e clique de novo no botão OK. Nenhuma mensagem deverá surgir agora. Faça uma entrada semelhante para cada caixa de texto e para a caixa de combinação. Pode ver o código
completo no final do documento (Listagem 8).
Alem de verificar se a caixa de texto tem algum valor, por vezes também é preciso verificar se é do tipo
correcto. Digite as seguintes declarações (Listagem 3). Estas usam a função IsNumeric() para verificar se
o valor da caixa de texto txtquantia é um numero ( e não algo como texto); e a função IsDate() para
verificar se o valor da caixa de texto txtData é uma data.
Listagem 3
Fig. 13 - A mensagem de erro lembra o utilizador a colocação do nome
9
If Not IsNumeric(Me.txtquantia.Value) Then
MsgBox "A caixa da Quantia deve conter um número.", vbExclamation,
"Despesas pessoais"
Me.txtquantia.SetFocus
Exit Sub
End If
If Not IsDate(Me.txtData.Value) Then
MsgBox "A Caixa da data deve conter uma data.", vbExclamation, "
Despesas pessoais "
Me.txtData.SetFocus
Exit Sub
End If
Agora, tendo chegado a um ponto onde todos os itens necessários estão presentes e correctos, é hora
de escrever as entradas para a folha de cálculo. Este código envolve a utilização de uma variável para
armazenar o número de linhas da tabela.
Insira uma nova linha no inicio deste procedimento, imediatamente a seguir da declaração Private Sub
cmdOK_Click() e escreva a linha seguinte:
Dim Contadorlinhas As Long
Eu assumi que as entradas vão ser feitas na Folha1 do livro de trabalho actual, começando na célula A1.
Poderá preferir começar a tabela com uma linha de rótulos. O código funcionará na mesma com
cabeçalhos ou não.
Volte ao fim do código e insira a próxima linha:
Contadorlinhas = Worksheets("Folha1").Range("A1").CurrentRegion.Rows.Count
Esta declaração conta quantas linhas de dados estão incluídos na região que inclui a célula A1 e armazena esse número na variável Contadorlinhas. Agora escreva as linhas de código para escrever a data na folha de cálculo (Listagem 4): Listagem 4 With Worksheets("Folha1").Range("A1")
.Offset(Contadorlinhas, 0).Value = Me.txtnome.Value
.Offset(Contadorlinhas, 1).Value = Me.txtapelido.Value
.Offset(Contadorlinhas, 2).Value = Me.cboDepartamento.Value
.Offset(Contadorlinhas, 3).Value = DateValue(Me.txtData.Value)
.Offset(Contadorlinhas, 4).Value = Me.txtquantia.Value
.Offset(Contadorlinhas, 5).Value = Me.txtDescricao.Value
If Me.chkRecibo.Value = True Then
.Offset(Contadorlinhas, 6).Value = "Sim"
Else
.Offset(Contadorlinhas, 6).Value = "Não"
End If
.Offset(Contadorlinhas, 7).Value = Format(Now, "dd/mm/yyyy hh:nn:ss")
End With O código usa uma serie de declarações para escrever o valor de cada controlo numa célula. Cada célula
é identificada por uma posição relativa à célula A1, utilizando a propriedade de VBA Offset. Esta requer
2 números, o primeiro representa o número de linhas de distância da célula A1 (que está guardada na
variável Contadorlinhas), a segunda representa o número de colunas de distância da célula A1 (que é
escrita no código por um numero).
10
Note que a função DateValue() é usada para mudar o valor da caixa de texto para uma data real (invés
de uma data apresentada como texto) antes de a passar para o Excel.
O valor de uma caixa de verificação é expressa em “TRUE” ou “FALSE” assim, como eu quero ver “SIM”
ou “NÃO” na folha de cálculo, o código utiliza uma declaração If para criar a entrada desejada.
Finalmente um registo de Registo de data/hora4 é inserido na última coluna usando o Format () para
especificar a hora exacta, fornecido pela função Now (). Agora é um bom momento para compilar e
testar o código novamente.
Para concluir o procedimento, após os dados terem sido escritos para a folha de cálculo, o formulário
precisa ser esvaziado. Isso exige uma outra variável a ser inserida no topo do procedimento:
Dim ctl As Control
Esta variável representa os controlos na folha de calculo e será utilizado no ciclo de visita a cada
controle, verifica se é uma caixa de texto ou uma caixa de combinação, e se for define o valor do
controlo para uma string vazia ("") . Se o controlo é uma caixa de verificação define o seu valor como
False. Digite as seguintes linhas (Listagem 5):
Listagem 5
For Each ctl In Me.Controls
If TypeName(ctl) = "TextBox" Or TypeName(ctl) = "ComboBox" Then
ctl.Value = ""
ElseIf TypeName(ctl) = "CheckBox" Then
ctl.Value = False
End If
Next ctl
Compile e teste o código de novo. Se ocorrerem erros verifique se escreveu exactamente como
mostrado aqui.
Código para o botão Limpar A função deste botão é limpar o formulário manualmente, se o utilizador o desejar. Ele usa exactamente
o mesmo procedimento que a última parte do processo do botão OK, então dê um duplo clique no
botão cmdLimpar para criar seu procedimento de evento Click e digite o código mostrado na Listagem 5.
Você pode copiar o código do procedimento do botão OK para poupar tempo.
Compilar, Testar e Guardar O Formulário terminado Acabamos de completar o código para o formulário. Compile e teste. Se estiver satisfeito com o
funcionamento do formulário guarde o ficheiro. O trabalho está quase terminado. Tudo o que resta é
criar uma macro para abrir o formulário.
A macro para abrir o Formulário Como viu, é fácil abrir o formulário pelo Editor de Visual Basic, mas a pessoa que irá utilizar esta
ferramenta precisa de uma maneira simples de abrir o formulário pelo Excel. Há várias maneiras de
conseguir isso, todas envolvem a utilização desta simples declaração:
4 No original Timestamp
11
frmDespesas.Show
Abrir o formulário manualmente Esta declaração pode ser incluída numa macro que o utilizador pode chamar através de um menu. Para
criar esta macro no Editor de Visual Basic, clique no menu Insert e escolha a opção Module para
adicionar um normal modulo ao livro que contem o formulário. Insira o código abaixo na janela deste
novo módulo (Listagem 6)
Listagem 6
Sub AbrirFormulario()
Worksheets("Folha1").Activate
frmDespesas.Show
End Sub
A primeira linha é opcional. Ela diz ao Excel para mudar para a folha Folha1. Mas uma vez que o código
que escreve os dados na folha de cálculo específica a folha pelo nome, este poderia ser omitido e ainda
assim os dados seriam colocados no sitio certo.
O utilizador pode correr esta macro a partir do menu do costume (Ferramentas> Macro> Macros) ou
poderá atribuir a macro a um menu personalizado, um botão numa barra de ferramentas, um botão na
folha de cálculo ou um objecto de desenho.
Abrir o formulário Automaticamente Poderá fazer uso de um dos procedimentos do Excel embutido no evento, para abrir o formulário
automaticamente quando o livro é aberto. No Editor de Visual Basic localize e clique duas vezes no
módulo ThisWorkbook na janela Project Explorer. Este módulo existe para manter as macros específicas
para este livro de trabalho.
No topo da janela de código existem duas listas pendentes. A da esquerda mostra neste momento
Geral. Abra a lista e escolha Workbook. O Editor do Visual Basic automaticamente cria a macro
Workbook_Open. Qualquer código que colocar neste macro será executado automaticamente quando o
livro abre. (Se quiser ver o que poderá fazer mais, dê uma olhadela nos outros itens na lista à direita.)
Complete do código da macro do seguinte modo (Listagem 7):
Listagem 7
Private Sub Workbook_Open()
Worksheets("Folha1").Activate
frmDespesas.Show
End Sub
Listagem com o código complete para o formulário Aqui está a listagem completa do código no módulo do formulário (Listagem 8)
Listagem 8
Private Sub cmdCancelar_Click()
Unload Me
End Sub
12
Private Sub cmdLimpar_Click()
'Limpa o formulario
For Each ctl In Me.Controls
If TypeName(ctl) = "TextBox" Or TypeName(ctl) = "ComboBox" Then
ctl.Value = ""
ElseIf TypeName(ctl) = "CheckBox" Then
ctl.Value = False
End If
Next ctl
End Sub
Private Sub cmdOK_Click()
Dim Contadorlinhas As Long
Dim ctl As Control
' Verifica os dados inseridos pelo utilizador
If Me.txtnome.Value = "" Then
MsgBox "Please enter a Nome.", vbExclamation, "Staff Expenses"
Me.txtnome.SetFocus
Exit Sub
End If
If Me.txtapelido.Value = "" Then
MsgBox "Please enter a Apelido.", vbExclamation, "Staff Expenses"
Me.txtnome.SetFocus
Exit Sub
End If
If Me.cboDepartamento.Value = "" Then
MsgBox "Please choose a Departmento.", vbExclamation, "Staff
Expenses"
Me.txtnome.SetFocus
Exit Sub
End If
If Me.txtData.Value = "" Then
MsgBox "Please enter a Data.", vbExclamation, "Staff Expenses"
Me.txtnome.SetFocus
Exit Sub
End If
If Me.txtquantia.Value = "" Then
MsgBox "Please enter an Quantia.", vbExclamation, "Staff Expenses"
Me.txtnome.SetFocus
Exit Sub
End If
If Me.txtDescricao.Value = "" Then
MsgBox "Please enter a Description.", vbExclamation, "Staff
Expenses"
Me.txtnome.SetFocus
Exit Sub
End If
If Not IsNumeric(Me.txtquantia.Value) Then
MsgBox "The Quantia box must contain a number.", vbExclamation,
"Staff Expenses"
Me.txtquantia.SetFocus
Exit Sub
End If
If Not IsDate(Me.txtData.Value) Then
MsgBox "The Data box must contain a Data.", vbExclamation, "Staff
Expenses"
Me.txtData.SetFocus
Exit Sub
End If
' Escrever os dados na folha
13
Contadorlinhas =
Worksheets("Folha1").Range("A1").CurrentRegion.Rows.Count
With Worksheets("Folha1").Range("A1")
.Offset(Contadorlinhas, 0).Value = Me.txtnome.Value
.Offset(Contadorlinhas, 1).Value = Me.txtapelido.Value
.Offset(Contadorlinhas, 2).Value = Me.cboDepartamento.Value
.Offset(Contadorlinhas, 3).Value = DateValue(Me.txtData.Value)
.Offset(Contadorlinhas, 4).Value = Me.txtquantia.Value
.Offset(Contadorlinhas, 5).Value = Me.txtDescricao.Value
.Offset(Contadorlinhas, 6).Value = Format(Now, "dd/mm/yyyy
hh:nn:ss")
If Me.chkRecibo.Value = True Then
.Offset(Contadorlinhas, 7).Value = "Sim"
Else
.Offset(Contadorlinhas, 7).Value = "Não"
End If
End With
‘Limpa o formulário
For Each ctl In Me.Controls
If TypeName(ctl) = "TextBox" Or TypeName(ctl) = "ComboBox" Then
ctl.Value = ""
ElseIf TypeName(ctl) = "CheckBox" Then
ctl.Value = False
End If
Next ctl
End Sub