Informática para Engenharia das Ciências Agrárias

Aulas Práticas

Aula 13: VBA IV (2001.12.06)

8. Construa um formulário que calcule sobre o conjunto de células seleccionadas as funções Soma, Média, Máximo e Mínimo e que guarde o resultado obtido numa outra célula. O acesso ao formulário deve ser conseguido através do uso de um botão de comando. As alíneas que se seguem orientam o desenvolvimento do formulário pretendido. À medida que realiza as várias alíneas, experimente o seu resultado no formulário.

8.1. No editor do Visual Basic crie um novo formulário de nome FormFunBas (menu <Inserir> seguido da opção <UserForm>) e adicione os controlos que se indicam para estruturar o aspecto do formulário segundo a figura abaixo.

8.2. Mude para a janela do Excel e utilizando a caixa de ferramentas dos controlos da barra do Visual Basic, insira um botão de comando na primeira folha de nome CommandButtonFunBas e com o texto Funções Básicas. Em seguida, mude para o editor do Visual Basic, seleccione o módulo da primeira folha e introduza o seguinte código:

Private Sub CommandButtonFunBas_Click()
   FormFunBas.Show
End Sub
No final desta operação, ao premir o botão deverá ser apresentado o formulário.

8.3. Para iniciar a caixa de combinação e limpar as caixas de texto do formulário, defina o evento Initialize como se segue:

Option Explicit
Private Sub UserForm_Initialize()
   ComboBox1.AddItem "Soma"
   ComboBox1.AddItem "Média"
   ComboBox1.AddItem "Máximo"
   ComboBox1.AddItem "Mínimo"
   TextBox1 = ""
   TextBox2 = ""
End Sub

8.4. Defina o evento Click do botão de comando como se segue:

Private Sub CommandButton1_Click()
   Range(TextBox2) = TextBox1
   Unload Me
End Sub

8.5. Defina o evento Change da caixa de combinação como se segue. O evento Change ocorre sempre que o conteúdo da caixa de combinação muda.

Private Sub ComboBox1_Change()
   Select Case ComboBox1.ListIndex
      Case 0
         TextBox1 = CelSoma(Selection)
      Case 1
         TextBox1 = CelMed(Selection)
      Case 2
         TextBox1 = CelMax(Selection)
      Case 3
         TextBox1 = CelMin(Selection)
   End Select
End Sub

8.6. Para concluir a funcionalidade do formulário é necessário definir os vários procedimentos referidos na alínea anterior. Segue-se o exemplo para o procedimento CelMax.

Function CelMax(rng As Range) As Integer
   Dim celula As Range
   CelMax = rng.Cells(1, 1)
   For Each celula In rng
      If celula > CelMax Then CelMax = celula
   Next
End Function