Upload
internet
View
112
Download
1
Embed Size (px)
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 1
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 1
UserForms• UserForms são formulários personalizados pelo
programador para criar uma interface entre a pasta de trabalho do Excel e o usuário da aplicação.
• Abra o Editor do VBA;
• No menu Inserir, escolha UserForm;
• A figura mostra como fica o Editor com um UserForm inserido.
Apostila - 376
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 2
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 2
UserForms
Apostila - 376
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 3
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 3
UserForms• Quando selecionamos o formulário, a caixa de
ferramentas fica ativa.• Esta, possui todos os objetos necessários para
compor o nosso formulário;
Apostila - 381
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 4
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 4
UserForms• Agora vamos adicionar um botão de comando ao
formulário UserForm1 e vamos configurar o evento Ao Clicar neste botão para exibir a famosa mensagem “Hello World!!!”
Clique com o botão esquerdo do mouse sobre a opção Botão
de Comando e arraste para o
formulário, e solte o botão do mouse.
Apostila - 381
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 5
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 5
UserForms• Dê um duplo clique sobre o botão inserido. Você
terá a página de códigos.
• Digite a caixa de mensagem indicada a seguir entre os comandos Sub e End Sub:
• Pressione o botão Executar Sub/UserForm. Você terá o UserForm no modo execução conforme mostra a Figura:
Apostila - 385
Private Sub CommandButton1_Click() MsgBox “Hello World!!!"End Sub
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 6
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 6
UserForms• Pressione o botão CommandButton1• Você terá a caixa de diálogo mostrada na Figura.
Apostila - 386
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 7
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 7
UserForms
A Janela “Propriedades – UserForm1, mostra todas as propriedades do UserForm.
Os outros controles que iremos explorar também terão suas propriedades listadas nesta janela.
Altere a propriedade Caption para “EXIBIR MENSAGEM!!!”
Apostila - 395
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 8
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 8
UserFormsCaixa de Combinação:Um controle do tipo Caixa de combinação (conhecido como ComboBox) é utilizado para exibir uma lista de opções. Estes controles são indicados para campos onde existe um conjunto de valores possíveis e limitado. Nestas situações, é muito mais prático para o usuário selecionar um valor em uma pequena lista, do que ter que digitar o valor. Além disso, o fato do usuário selecionar o valor em uma lista, praticamente elimina a possibilidade de erros de digitação.
Apostila - 409
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 9
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 9
UserFormsVamos criar um controle do tipo Caixa de Combinação, no qual serão listadas as seções da empresa:AdministraçãoAuditoriaContabilidadeFinançasInformáticaMarketingPesquisa e DesenvolvimentoVendasAlém do controle do tipo Caixa de combinação, também adicionaremos um controle do tipo rótulo, para identificar o controle Caixa de combinação.
Apostila - 409
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 10
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 10
UserForms
1. Crie um novo formulário;2. Adicione um controle do tipo rótulo; 3. Altere a propriedade Name do controle para Lista e a
propriedade Caption para Selecione uma Seção;4. Dimensione o controle de tal maneira que todo o texto da
propriedade Caption possa ser exibido;5. Altere a fonte do rótulo para negrito, a cor da fonte para
vermelho e a cor de fundo do rótulo para amarelo;6. Seu formulário deverá estar conforme indicado na Figura a
seguir:
Apostila - 410
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 11
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 11
UserForms
Apostila - 410
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 12
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 12
UserForms3. Agora vamos adicionar e configurar um controle do tipo Caixa de Combinação. Na Caixa de ferramentas, clique no botão ( ). Clique no formulário, à direita do rótulo. Será criado um controle do tipo Caixa de combinação, no tamanho padrão. Você pode redimensionar o controle para o tamanho desejado. Seu formulário deve estar semelhante ao indicado na Figura a seguir:
Apostila - 410
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 13
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 13
UserForms4. Agora vamos definir os itens que serão exibidos no controle do tipo Caixa de combinação.5. Clique no controle Caixa de combinação para selecioná-lo. Se a janela de propriedades não estiver sendo exibida, pressione a tecla F4 para exibir a janela de propriedades.6. Altere a propriedade Name para ListaDeSeções. 7. A lista de valores de um controle do tipo Caixa de Combinação é informado através da propriedade RowSource. Nesta propriedade você deve informar uma faixa de células na planilha, onde estão os valores que devem ser exibidos na Caixa de Combinação. Por exemplo, você pode informar o seguinte valor para a propriedade RowSource:
Apostila - 411
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 14
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 14
UserForms
Seções!H1:H8
Neste exemplo, estou informando que serão utilizados os valores da faixa H1 até H8, da planilha Seções, da pasta de trabalho atual. Ou seja, a nossa caixa de combinação terá oito linhas, sendo que o valor da primeira linha é obtido a partir da célula H1 da planilha Seções, o valor da segunda linha é obtido a partir da célula H2 da planilha Seções e assim por diante.Crie a planilha Seções e digite os dados que você deseja exibir no controle Caixa de Combinação.
Apostila - 411
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 15
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 15
UserForms
AdministraçãoAuditoriaContabilidadeFinançasInformáticaMarketingPesquisa e DesenvolvimentoVendas
Apostila - 411
Digite na planilha “Seções”, iniciando na célula H1, as seções:
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 16
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 16
UserForms
6. Agora já estamos em condições de testar o nosso controle. Clique em qualquer espaço do formulário para selecioná-lo e pressione a tecla F5 para executá-lo.7. O formulário será carregado. Abra a lista do controle Caixa de combinação. Observe que são exibidos os valores das células H1 até H8, da planilha Seções, conforme pode ser conferido na figura a seguir:
Apostila - 411
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 17
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 17
UserForms
Apostila - 411
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 18
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 18
UserForms
Propriedades do controle Caixa de Combinação.
Apostila - 412
Importante: Muitas das propriedades que serão descritas, se aplicam também para outros tipos de controles.
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 19
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 19
UserForms
Apostila - 412
Propriedade AutoSize:Esta propriedade determina se o controle é automaticamente redimensionado para exibir todo o seu conteúdo. Esta propriedade pode ser configurada na janela de propriedades, definindo o seu valor em True ou False
Sintaxe usando código VBA
objeto.AutoSize = True/False
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 20
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 20
UserForms
Apostila - 413
Propriedade AutoTab:Esta propriedade determina se irá ocorrer a tabulação automática quando um usuário digita o número máximo de caracteres permitido em um TextBox ou na parte da caixa de texto de um ComboBox.
Sintaxe usando código VBA
objeto.AutoTab = True/False
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 21
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 21
UserForms
Apostila - 414
Propriedade BackColor :Esta propriedade é utilizada para definir a cor de segundo plano do controle. Você verá a cor de fundo de um objeto, somente se a propriedade BackStyle estiver definida como fmBackStyleOpaque.
Sintaxe usando código VBA
objeto.BackColor [= Longo]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 22
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 22
UserForms
Apostila - 415
Propriedade BackStyle:Esta propriedade é utilizada para retornar ou definir o estilo de segundo plano do controle.
Sintaxe usando código VBA
objeto.BackStyle = fmBackStyle
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 23
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 23
UserForms
Apostila - 415
Propriedade BorderColor :Esta propriedade é utilizada para especificar a cor da borda de um controle. Para se conseguir inserir uma borda, a propriedade BorderStyle deve estar definida como FmBorderStyleSingle.
Sintaxe usando código VBA:
objeto.BorderColor [= Longo]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 24
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 24
UserForms
Apostila - 416
Propriedade BorderStyle:Esta propriedade especifica o tipo de borda utilizado por um controle ou um formulário.
Sintaxe usando código VBA
objeto.BorderStyle [= fmBorderStyle]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 25
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 25
UserForms
Apostila - 412
Propriedade BoundColumn:Esta propriedade identifica a fonte dos dados em um controle do tipo Caixa de combinação (ComboBox) ou Caixa de Listagem (ListBox) de várias colunas. Se o controle tiver duas ou mais colunas, a propriedade BoundColumn indica o valor de qual coluna será associado ao controle, depois que uma das opções da lista tiver sido selecionada. Este valor poderá ser resgatado com a propriedade Value.
Sintaxe usando código VBA
objeto.BoundColumn [= Variante]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 26
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 26
UserForms
Apostila - 412
Propriedade Value:Esta propriedade especifica o estado ou conteúdo de um dado controle.
Sintaxe usando código VBA
objeto.Value [= Variante]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 27
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 27
UserForms
Apostila - 412
Propriedade ColumnCount :Esta propriedade é utilizada para especificar o número de colunas a exibir em uma caixa de listagem ou caixa de combinação.
Sintaxe usando código VBA
objeto.ColumnCount [= Longo]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 28
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 28
UserForms
Apostila - 412
Propriedade TextColumn:Esta propriedade identifica a coluna em um controle Caixa de Combinação (ComboBox) ou Caixa de Listagem (ListBox), para armazenar na propriedade Text quando o usuárioselecionar uma linha.
Sintaxe usando código VBA
objeto.TextColumn [= Variante]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 29
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 29
UserForms
Apostila - 412
Propriedade Text :Esta propriedade é utilizada para retornar ou para definir o texto em um controle do tipo Caixa de Texto (TextBox).
Sintaxe usando código VBA
objeto.Text [= Seqüência]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 30
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 30
UserForms
Apostila - 412
Propriedade ColumnWidths:Esta propriedade é utilizada para especificar a largura de cada coluna de uma caixa de combinação ou caixa de listagem de várias colunas. Por exemplo, você pode definir a largura para três colunas como: 0;3;0. Neste caso, somente a segunda coluna será exibida.
Sintaxe usando código VBA:
objeto.ColumnWidths [= Seqüência]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 31
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 31
UserForms
Apostila - 412
Propriedade ColumnHeads:Este controle é utilizado para exibir uma única linha de cabeçalhos de coluna para caixas de listagem, caixas de combinação e objetos que aceitam cabeçalhos de coluna.
Sintaxe usando código VBA
objeto.ColumnHeads [= Booleano]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 32
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 32
UserForms
Apostila - 412
Propriedade ControlTipText :Esta propriedade define o texto que aparece quando o usuário mantém, durante um momento, o ponteiro do mouse sobre um controle sem clicar.
Sintaxe usando código VBA
objeto.ControlTipText [= Seqüência]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 33
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 33
UserForms
Apostila - 412
Propriedade DropButtonStyle:Esta propriedade especifica o símbolo exibido no botão suspenso de um controle do tipo Caixa de combinação (ComboBox.),sendo que o símbolo padrão é uma flechinha para baixo.
Sintaxe usando código VBA
objeto.DropButtonStyle [= fmDropButtonStyle]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 34
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 34
UserForms
Apostila - 412
Propriedade Enabled:Esta propriedade especifica se um controle pode receber o foco e responder aos eventos gerados pelo usuário.
Sintaxe usando código VBA
objeto.Enabled [= Booleano]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 35
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 35
UserForms
Apostila - 412
Propriedade Locked:Esta propriedade é utilizada para especificar se um controle pode ter o seu conteúdo editado. Quando um controle está bloqueado e ativado, ele ainda pode iniciar eventos e ainda pode receber o foco, apenas não poderá ter o seu conteúdo alterado.
Sintaxe usando código VBA:
objeto.Locked [= Booleano]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 36
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 36
UserForms
Apostila - 412
Propriedade Font:Esta propriedade retorna um objeto do tipo Fonte, o qual define as características do texto utilizado por um controle ou formulário. Utilize as propriedades de fonte para especificar o nome da fonte, definir texto sublinhado ou em negrito ou para ajustar o tamanho do texto.
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 37
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 37
UserForms
Apostila - 412
Propriedade ForeColor:Esta propriedade especifica a cor de primeiro plano de um objeto. Em uma caixa de texto ou de combinação, esta propriedade altera a cor do texto.
Sintaxe usando código VBA
objeto.ForeColor [= Longo]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 38
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 38
UserForms
Apostila - 412
Propriedades Height e Width:Estas propriedades definem a altura (Height) e a largura (Width), em pontos, de um objeto.
Sintaxe usando código VBA
objeto.Height [= Único]objeto.Width [= Único]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 39
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 39
UserForms
Apostila - 412
Propriedades Left e Top:Estas duas propriedades definem a distância entre um controle e a borda esquerda ou superior do formulário onde está o controle.
Sintaxe usando código VBA
objeto.Left [= Único]objeto.Top [= Único]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 40
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 40
UserForms
Apostila - 412
Propriedade ListRows:Esta propriedade é utilizada para especificar o número máximo de linhas a exibir na lista de um controle do tipo Caixa de Combinação ou Caixa de Listagem.
Sintaxe usando código VBA
objeto.ListRows [= Longo]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 41
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 41
UserForms
Apostila - 412
Propriedade ListStyle:Esta propriedade é utilizada para especificar o aspecto visual da lista em um ListBox ou ComboBox.
Sintaxe usando código VBA
objeto.ListStyle [= fmListStyle]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 42
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 42
UserForms
Apostila - 412
Propriedade ListWidth:Esta propriedade é utilizada para especificar a largura da lista em um controle do tipo Caixa de Combinação (ComboBox). Se o valor for 0, a lista terá o mesmo tamanho do controle.
Sintaxe usando código VBA
objeto.ListWidth [= Variante]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 43
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 43
UserForms
Apostila - 412
Propriedade MatchEntry:Esta propriedade é utilizada para retornar ou para definir um valor indicando como um controle do tipo Caixa de Listagem (ListBox) ou Caixa de Combinação (ComboBox) pesquisasua lista à medida que o usuário digita.
Sintaxe usando código VBA
objeto.MatchEntry [= fmMatchEntry]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 44
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 44
UserForms
Apostila - 412
Propriedade MatchRequired:Especifica se um valor digitado na parte texto de um ComboBox deve corresponder a uma entrada na parte lista existente do controle. O usuário pode digitar valores não correspondentes, mas não pode deixar o controle enquanto não for digitado um valor correspondente.
Sintaxe usando código VBA
objeto.MatchRequired [= Booleano]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 45
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 45
UserForms
Apostila - 412
Propriedade MaxLength:Especifica o número máximo de caracteres que um usuário pode digitar em um TextBox ou ComboBox.
Sintaxe usando código VBA
objeto.MaxLength [= Longo]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 46
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 46
UserForms
Apostila - 412
Propriedade MousePointer:Esta propriedade é utilizada para especificar o tipo de ponteiro exibido quando o usuário posiciona o mouse sobre um determinado objeto.
Sintaxe usando código VBA
objeto.MousePointer [= fmMousePointer]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 47
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 47
UserForms
Apostila - 412
Propriedade Row Source:Esta propriedade é utilizada para especificar a origem que fornece uma lista para um controle do tipo Caixa de Combinação (ComboBox) ou Caixa de Listagem (ListBox.). Já utilizamos esta propriedade em um exemplo deste módulo, no qual criamos uma Caixa de Combinaçãoque exibia uma lista de seções.
Sintaxe usando código VBA
objeto.RowSource [= Seqüência]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 48
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 48
UserForms
Apostila - 412
Propriedade SpecialEffect:Esta propriedade é utilizada para especificar o aspecto visual de um objeto.
Sintaxe usando código VBA
objeto.SpecialEffect [= fmButtonEffect]
Para Caixa de seleção, Botão de opção, Botão de ativação, use a sintaxe a seguir:
Para outros controles, use a sintaxe a seguir:
objeto.SpecialEffect [= fmSpecialEffect]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 49
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 49
UserForms
Apostila - 412
Propriedade TabIndex:Esta propriedade é utilizada para especificar a posição de um único controle na ordem de tabulação do formulário.
Sintaxe usando código VBA
objeto.TabIndex [= Inteiro]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 50
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 50
UserForms
Apostila - 412
Propr iedade TabStop:Esta propriedade define se um controle pode receber o foco quando o usuário tabula até ele.
Sintaxe usando código VBA
objeto.TabStop [= Booleano]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 51
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 51
UserForms
Apostila - 412
Propriedade TextAlign:Esta propriedade especifica como o texto é alinhado em um controle.
Sintaxe usando código VBA
objeto.TextAlign [= fmTextAlign]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 52
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 52
UserForms
Apostila - 412
Propriedade Visible:Esta propriedade especifica se um objeto está visível ou oculto.
Sintaxe usando código VBA
objeto.Visible [= Booleano]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 53
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 53
UserForms
Apostila - 412
Propriedade WordWrap:Esta propriedade indica se o conteúdo de um controle quebra automaticamente a linha no final.
Sintaxe usando código VBA
objeto.WordWrap [= Booleano]
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 54
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 54
UserForms – Exemplo1• Exemplo 1: Construir um Caça Níquel usando
quatro figuras e sorteando três em cada jogada, premiando quando as três figuras forem iguais.
• Abra a pasta UserForms.xls;
• Abra o editor do VBA;
• No menu Inserir escolha UserForm. Sua tela deve estar como mostra a Figura;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 55
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 55
UserForms – Exemplo1
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 56
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 56
UserForms – Exemplo1
• Inclua três controles de imagem na parte superior do Form para serem utilizados como o visor do Caça Níquel;
• Inclua mais quatro controles de imagem na parte inferior do Form para serem utilizados como mostra da figuras disponíveis no sorteio;
• Insira um rótulo;
• Aumente o tamanho do UserForm para inserir os controles;
• Por último, insira dois botões de comando. Tente deixar seu Form como mostra a Figura;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 57
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 57
UserForms – Exemplo1Agora configure as propriedades dos elementos de exibição, de acordo com a tabela:
Objeto Propriedade Configuração
Name CaçaNíquel
Caption Caça Níquel
Name Jogada
Caption Jogada
Name Sair
Caption Sair
UserForm1
CommandButton1
CommandButton2
Para Label1, deixe em branco a propriedade Caption.
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 58
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 58
UserForms – Exemplo1Para inserir as figuras nos 4 controles de imagem, siga os passos:1. Selecione o primeiro controle de imagem,
conforme mostra a figura;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 59
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 59
UserForms – Exemplo12. Na janela de Propriedades, mude Name para
Figura1. Em seguida, localize a propriedade Picture. Clique em reticências. Você terá a caixa de diálogo Carregar figura como mostra a Figura a seguir;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 60
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 60
UserForms – Exemplo13. Na opção Arquivos do tipo, escolha Todos os
Arquivos(*.*). Você terá quatro figuras disponíveis. Clique na Figura1 e pressione o botão Abrir;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 61
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 61
UserForms – Exemplo14. Você verá no UserForm a primeira figura inserida
no controle de imagem (Figura);
5. Execute os mesmos passos para inserir as outras três figuras.
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 62
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 62
UserForms – Exemplo1• Para iniciar a codificação, dê um duplo clique no
Form para abrir a janela de código. Inclua a declaração da variável Saldo na seção Geral.
Dim Saldo As Currency
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 63
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 63
UserForms – Exemplo1• Volte ao Form e selecione-o. Dê agora um duplo
clique no Form. Escolha o evento Activate, como mostra a Figura;
• Você terá o procedimento, como mostra a figura, inserido;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 64
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 64
UserForms – Exemplo1• Digite as seguintes linhas de código para o
procedimento Activate do UserForm;
• A instrução Randomize avisa ao VBA para alternar os números produzidos pelo gerador de números aleatórios. Sem essa instrução, haveria uma repetição dos números gerados toda vez que o programa fosse executado;
Private Sub UserForm_Activate() Randomize Saldo = InputBox("Quanto você deseja apostar (em R$)?")End Sub
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 65
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 65
UserForms – Exemplo1• Em seguida, vamos escrever o código para o botão
Sair. Volte ao Form e dê um duplo clique sobre o botão Sair para acessar seu código;
Private Sub Sair_Click()If Saldo > 0 Then MsgBox "Você tem " & Saldo & " para receber!!!"Else MsgBox "Hoje você não está com sorte. Tente outro dia!!!"End IfEndEnd Sub
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 66
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 66
UserForms – Exemplo1• O próximo passo é escrever a rotina do botão
Jogada. Dê um duplo clique sobre o botão para acessar seu código. Você terá o esqueleto do procedimento.
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 67
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 67
UserForms – Exemplo1• Digite as linhas de código:
Dim P1, P2, P3 As Integer'Gerar números aleatóriosP1 = Int(4 * Rnd + 1)P2 = Int(4 * Rnd + 1)P3 = Int(4 * Rnd + 1)
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 68
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 68
UserForms – Exemplo1
'Mostrar a figura no visor 1If P1 = 1 Then Image1.Picture = Figura1.PictureElseIf P1 = 2 Then Image1.Picture = Figura2.PictureElseIf P1 = 3 Then Image1.Picture = Figura3.PictureElseIf P1 = 4 Then Image1.Picture = Figura4.PictureEnd If
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 69
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 69
UserForms – Exemplo1
'Mostrar a figura no visor 2If P2 = 1 Then Image2.Picture = Figura1.PictureElseIf P2 = 2 Then Image2.Picture = Figura2.PictureElseIf P2 = 3 Then Image2.Picture = Figura3.PictureElseIf P2 = 4 Then Image2.Picture = Figura4.PictureEnd If
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 70
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 70
UserForms – Exemplo1
'Mostrar a figura no visor 3If P3 = 1 Then Image3.Picture = Figura1.PictureElseIf P3 = 2 Then Image3.Picture = Figura2.PictureElseIf P3 = 3 Then Image3.Picture = Figura3.PictureElseIf P3 = 4 Then Image3.Picture = Figura4.PictureEnd If
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 71
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 71
UserForms – Exemplo1'Atualização do saldoSaldo = Saldo - 1'Verificar se o jogador ganhouIf P1 = P2 And P2 = P3 Then If P1 = 1 Then Saldo = Saldo + 25 MsgBox "Você tirou a sorte grande!!!" Else Saldo = Saldo + 10 MsgBox "Você venceu!!!" End IfEnd If
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 72
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 72
UserForms – Exemplo1
'Calcular e exibir o total acumuladoLabel1.Caption = Format(Saldo, "R$0.00")If Saldo <= 0 Then MsgBox "Você está sem crédito!" a = InputBox("Quer mais crédito? Em caso afirmativo, digite Sim.")
If a = "Sim" Or a = "sim" Then Saldo = InputBox("Quanto você deseja comprar?") Label1.Caption = Format(Saldo, "R$0.00") End IfEnd If
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 73
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 73
UserForms – Exemplo2 Vamos construir neste exemplo um formulário para
entrar com dados cadastrais de funcionários. Para tanto, vamos seguir os passos:
1.Abra o Excel;
2.Insira uma nova pasta de trabalho e salve-a como Cadastro de Funcionários.xls;
3.Nomeie a planilha 1 como Cadastro de Funcionários;
4.Digite nesta planilha os títulos e faça a formatação de bordas conforme mostra a Figura;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 74
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 74
UserForms – Exemplo2
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 75
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 75
UserForms – Exemplo2
5. Abra o Editor do VBA;
6. Insira um UserForm;
7. Para a propriedade Caption do UserForm, digite Cadastro de Funcionários e para a propriedade Name digite Cadastro;
8. Insira agora 3 Labels, 3 caixas de texto e 4 botões de comando e deixe-os como mostra a Figura;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 76
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 76
UserForms – Exemplo2
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 77
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 77
UserForms – Exemplo2
9. Vamos agora escrever o código para o botão Gravar;
10. Dê um duplo clique no botão gravar e digite o código conforme Figura
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 78
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 78
UserForms – Exemplo2
'Ativar a primeira planilhaActiveWorkbook.Worksheets("Cadastro de Funcionários").Activate
'Selecionar a célula A3Range("A3").Select'Procurar a primeira célula vaziaDo If Not (IsEmpty(ActiveCell)) Then ActiveCell.Offset(1, 0).Select End IfLoop Until IsEmpty(ActiveCell) = True
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 79
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 79
UserForms – Exemplo2
'Carregar os dados digitados na planilhaActiveCell.Value = TextBox1.ValueActiveCell.Offset(0, 1).Value = TextBox2.ValueActiveCell.Offset(0, 2).Value = TextBox3.Value
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 80
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 80
UserForms – Exemplo2
'Limpar as caixa de textoTextBox1.Value = EmptyTextBox2.Value = EmptyTextBox3.Value = Empty
'Colocar o foco na primeira caixa de textoTextBox1.SetFocus
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 81
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 81
UserForms – Exemplo2
11. Volte ao UserForm;
12. Vamos inserir agora o código para o botão Pesquisar;
13. Dê um duplo clique no botão Pesquisar;
14. Digite o código mostrado na Figura;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 82
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 82
UserForms – Exemplo2
'Verificar se foi digitado o nome de um 'funcionário na primeira caixa de textoIf TextBox1.Text = "" Then MsgBox "Digite o nome de um funcionário"End If
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 83
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 83
UserForms – Exemplo2
Localiza informações específicas em um intervalo, e retorna um objeto Range representando a primeira célula onde essas informações se encontram. Retorna Nothing se nenhuma coincidência for encontrada. Não afeta a seleção da célula ativa.
Método Find
expressão.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
Sintaxe:
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 84
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 84
UserForms – Exemplo2
What Variant obrigatório. Determina os dados a serem procurados. Pode ser uma seqüência de caracteres ou qualquer tipo de dados do Microsoft Excel.After Variant opcional. A célula depois da qual você deseja que a pesquisa comece. Corresponde à posição da célula ativa quando uma pesquisa é feita a partir da interface do usuário. Se você não especificar esse argumento, a pesquisa começará após a célula do canto superior esquerdo do intervalo.LookIn Variant opcional. O tipo de informação.LookAt Variant opcional. Pode ser uma das seguintes constantes xlLookAt: xlWhole ou xlPart.
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 85
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 85
UserForms – Exemplo2
With Worksheets("Cadastro de Funcionários").Range("A:A") Set c = .Find(TextBox1.Value, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then c.Activate TextBox1.Value = c.Value TextBox2.Value = c.Offset(0, 1).Value TextBox3.Value = c.Offset(0, 2).Value Else MsgBox "Funcionário não encontrado!" End IfEnd With
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 86
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 86
UserForms – Exemplo2
15. Volte ao UserForm;
16. Vamos inserir agora o código para o botão Excluir;
17. Dê um duplo clique no botão Excluir;
18. Digite o código mostrado na Figura;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 87
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 87
UserForms – Exemplo2
'Declarar a variável Resp para receber uma respostaDim Resp As Integer
'Fazer a busca do registro digitado pelo usuário With Worksheets("Cadastro de Funcionários").Range("A:A") Set c = .Find(TextBox1.Value, LookIn:=xlValues, LookAt:=xlWhole)
Set c = .Find(TextBox1.Value, LookIn:=xlValues, LookAt:=xlWhole)
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 88
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 88
UserForms – Exemplo2
If Not c Is Nothing Then
Resp = MsgBox("Tem certeza que deseja excluir o registro?", vbYesNo, "Confirmação")
Resp = MsgBox("Tem certeza que deseja excluir o registro?", vbYesNo, "Confirmação")
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 89
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 89
UserForms – Exemplo2
If Resp = vbYes Then c.Select Selection.EntireRow.Delete TextBox1.Value = "" TextBox2.Value = "" TextBox3.Value = "“ Else MsgBox "O registro não será excluído!" End If Else MsgBox "Funcionário não encontrado!" End IfEnd With
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 90
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 90
UserForms – Exemplo2
16. Volte ao UserForm;
17. Vamos inserir agora o código para o botão Fechar;
18. Dê um duplo clique no botão Fechar;
19. Digite o código mostrado na Figura;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 91
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 91
UserForms – Exemplo2
Private Sub CommandButton4_Click() Cadastro.HideEnd Sub
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 92
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 92
UserForms – Exemplo2
16. Finalmente, vamos inserir um botão na planilha para ativar o UserForm;
17. Clique na Planilha Cadastro de Funcionários;
18. No Menu Exibir Barra de Ferramentas, ative a barra Caixa de Ferr. De Controle. Você verá a barra de ferramentas mostrada na Figura;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 93
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 93
UserForms – Exemplo2
19. Na Caixa de ferram. De controle, clique sobre botão de comando e então desenhe na planilha um novo botão;
20. Clique com o botão direito do mouse sobre o botão. Você terá uma caixa de listagem como mostra a Figura;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 94
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 94
UserForms – Exemplo2
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 95
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 95
UserForms – Exemplo2
21. Escolha a opção Objeto Botão de Comando e então Editar;
22. Digite para o nome do botão, Cadastro;
23. Você terá a aparência para sua planilha como mostra a figura;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 96
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 96
UserForms – Exemplo2
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 97
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 97
UserForms – Exemplo2
24. Agora só falta fazer o botão abrir o UserForm. Clique novamente com o botão direito do mouse e escolha a opção Exibir código;
25. Na linha de código, digite o comando como mostrado na Figura;
26. Ainda no Editor do VBA, pressione na barra de ferramentas o botão para execução do código.
27. No UserForm, pressione o botão Fechar. Seu aplicativo está completo. Teste-o;
UTFPR – Damat
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 98
Excel – Macros e Programação em VBA
13 de setembro de 2007 Pág. 98
UserForms – Exemplo2
Private Sub CommandButton1_Click() Cadastro.ShowEnd Sub