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.
- Três rótulos com os textos (propriedade Caption) Função:, Resultado: e Guardar em:
- Uma caixa de combinação de nome (propriedade Name) ComboBox1.
- Uma caixa de texto de nome TextBox1 associada ao rótulo Resultado:.
- Uma caixa de texto de nome TextBox2 associada ao rótulo Guardar em:.
- Um botão de comando de nome CommandButton1 e com o texto OK.
![]()
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:
No final desta operação, ao premir o botão deverá ser apresentado o formulário.Private Sub CommandButtonFunBas_Click()
FormFunBas.Show
End Sub8.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 Sub8.4. Defina o evento Click do botão de comando como se segue:
Private Sub CommandButton1_Click()
Range(TextBox2) = TextBox1
Unload Me
End Sub8.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 Sub8.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