Excel e VBA: Funções e Subprocedimentos
Classificado em Matemática
Escrito em em português com um tamanho de 19,01 KB.
1. Qual o resultado da fórmula `=PROCV(57;D1:E3;2;FALSO)`?
Quando temos na folha de cálculo ativa os valores indicados na figura abaixo, qual o resultado da fórmula `=PROCV(57;D1:E3;2;FALSO)`?
Resposta: 9
2. Valor na célula F2 após copiar e colar
Que valor ficará na célula F2 se a célula G2 estiver selecionada, for escolhida a opção "Copiar" e depois for escolhida a opção "Colar" quando a célula F2 estiver ativa?
Resposta: 2,5
3. Número mínimo de folhas em um livro Excel
Um livro Excel tem obrigatoriamente no mínimo:
Resposta: 1 folha
4. Resultado de `=D1=F2` com datas
Qual será o resultado de se escrever em determinada célula `=D1=F2`, sabendo que as células referidas contêm datas?
Opções:
- Erro
- Sim ou Não
- Verdadeiro ou Falso
- 0 ou 1
5. Resultado de `=-3^2&2` no Excel
Sabendo que a negação (-) tem uma prioridade mais elevada do que os restantes operadores utilizados na fórmula `=-3^2&2`, e o operador concatenação (&) tem a prioridade mais baixa, qual será o seu resultado quando colocada numa célula de uma folha Excel?
Resposta: 92
6. Valores visualizados após execução de `ProcA`
Considere os subprocedimentos seguintes:
Sub ProcA()
Dim A As Long
Dim B As Long
A = 100: B = 200
ProcB A, B
End Sub
Sub ProcB(ByRef X As Long, ByVal Y As Long)
X = 10
Y = 20
MsgBox X & ", " & Y
End Sub
Que valores serão visualizados quando o subprocedimento `ProcA` for executado?
Resposta: 10, 20
Perguntas e Respostas sobre VBA
1. Declaração de variável para armazenar "APROG"
Para termos uma variável A com o valor "APROG", essa variável pode ser declarada das seguintes formas:
- Dim A
- Dim A As Texto (Incorreto)
- Dim A As Variant
- Dim A As String
2. Limitação da formatação condicional
Com a formatação condicional não é possível:
- Indicar mais de uma condição a verificar na aplicação da formatação
- Especificar uma condição que procure o que está a negrito e formatar também a itálico tudo o que estiver a negrito
- Aplicar uma formatação aos valores que estejam acima da média de um conjunto de valores sem que o utilizador introduza uma fórmula
3. Referenciar célula A1 da Folha2 a partir da Folha1
Como pode ser referida a célula A1 da Folha 2 quando a folha ativa é Folha1?
- Folha1!A1
- Folha2.A1
- Folha2/A1
- Folha2!A1
4. Afirmações sobre objetos VBA
Sobre os objetos VBA podemos afirmar que:
- Têm obrigatoriamente um tamanho (Incorreto)
- Têm propriedades
- Têm funções (Incorreto)
- Podem atuar como contentores para outros objetos
- O objeto Workbook representa uma folha (Incorreto)
5. Algoritmos de pesquisa em matrizes
Os algoritmos de pesquisa que terminam quando é encontrado um valor maior que o procurado não podem ser aplicados aos valores que estejam numa matriz:
- Se os valores forem datas
- Se existirem valores repetidos
- Se os valores não estiverem ordenados
- Se existirem valores que correspondem a datas e números inteiros
6. Invocação de subprocedimento com `ParamArray`
Um determinado subprocedimento começa da forma seguinte:
Sub somarNumeros(n1, n2, ParamArray numeros() As Variant)
Como pode o subprocedimento ser invocado?
- Call somarNumeros(25, 25, "1", "aprog")
- Call somarNumeros(25, 25, 25, 'aprog')
- Call somarNumeros(25, "aprog")
- Call somarNumeros
- Call somarNumeros(25)
- Call somarNumeros(25, 25)
- Call somarNumeros(25, 25, 25, 25)
7. Resultado do subprocedimento `ForNextStepDemo`
Considere o subprocedimento seguinte:
Sub ForNextStepDemo()
Dim i As Single
For i = 5 To 1 Step -2.5
[A3] = [A3] + i
Next i
End Sub
Sabendo que a célula A3 estava vazia, podemos afirmar que:
- Se a variável i fosse do tipo Integer, o resultado seria o mesmo (Incorreto)
- Na célula A3 ficará o valor 7,5 depois do subprocedimento ser executado
- Na célula A3 ficará o valor 8 depois do subprocedimento ser executado (Incorreto)
- O subprocedimento não será executado com sucesso e a célula A3 continuará vazia (Incorreto)
- O subprocedimento não será executado com sucesso e o conteúdo da célula A3 será #VALOR? (Incorreto)
8. Resultado do subprocedimento `EncontrarPrimeiraB`
Considere o subprocedimento seguinte:
Sub EncontrarPrimeiraB()
Dim FoundCell As Range, Area As Range
Dim LastCell As Range
Set Area = Range("A1").CurrentRegion
Set FoundCell = Area.Find(what:="porto", searchDirection:=xlNext)
MsgBox FoundCell.Address
End Sub
Podemos afirmar que:
- Resultará em erro se nada for encontrado
- Mostrará "Not found" se nada for encontrado (Incorreto)
- Mostra o endereço de todas as células com o valor especificado (Incorreto)
- Mostrará logo o endereço da célula A1 se o valor especificado existir em várias células e inclusive na célula A1 (Incorreto)
Função `Somatorio` Corrigida
Pretende-se uma função que calcule \(\sum_{i=1}^{n} (i+1)\) (n é um número inteiro maior que 1) e para isso foi escrita a seguinte função:
Function Somatorio(indiceSup As Integer) As Long
Dim soma As Long, i As Integer
soma = 0
For i = 1 To indiceSup
soma = i
Next i
Somatorio = soma
End Function
No entanto, a função Somatorio não produz os resultados esperados. Por exemplo, Somatorio(3) deveria retornar o valor 9 (\(\sum_{i=1}^{3} (i+1)\) ) mas retorna o valor 3. Reescreva a função para que passe a retornar o valor esperado quando recebe um número inteiro maior que 1.
Função corrigida:
Function Somatorio(indiceSup As Integer) As Long
Dim soma As Long, i As Integer
soma = 0
For i = 1 To indiceSup
soma = soma + (i + 1)
Next i
Somatorio = soma
End Function