Ficha 5_resolução 1 Objectivo: Pretende-se estruturar em Excel (folhas e módulo com procedimentos necessários) por forma a permitir a gestão de valores a pagar pelos clientes de uma companhia de distribuição de gás natural. 1. Permitir o registo dos clientes e caracterização adequada 2. Permitir o registo dos consumos de cada cliente (mensalmente) 3. Efectuar o cálculo do valor a cobrar a cada cliente a) Cálculo de acordo com alínea a) do problema b) Cálculo de acordo com alínea b), ou seja, introduzindo o conceito de tipo de 4. Colocar um botão na folha de clientes que permita calcular o valor a cobrar, dado o consumo e tipo de cliente. 1.2. Criar duas folhas de cálculo (uma para o registo de clientes e outra para os consumos de um dado mês replicada depois para cada novo mês a considerar) 3. a) Criar função a invocar da folha de consumos, que devolva o valor a cobrar por cada linha de consumos terá um parâmetro, m3 consumidos). Esta função será depois invocada da célula adequada da folha de cálculo. 2 1
Objectivo: Pretende-se estruturar em Excel (folhas e módulo com procedimentos necessários) por forma a permitir a gestão de valores a pagar pelos clientes de uma companhia de distribuição de gás natural. Efectuar o cálculo do valor a cobrar a cada cliente 3. b) Cálculo de acordo com alínea b), ou seja, introduzindo o conceito de tipo de 4. Colocar um botão na folha de clientes que permita calcular o valor a cobrar, dado o consumo e tipo de cliente. 3. b) Criar função a invocar da folha de consumos, que devolva o valor a cobrar por cada linha de consumos terá dois parâmetros, m3 consumidos e tipo de cliente). Esta função será depois invocada da célula adequada da folha de cálculo. b) Aqui será necessário numa célula da folha de consumos, utilizando as funções índice e corresp, ir buscar o tipo de cliente à folha de clientes. 4. Criar sub que aceite o consumo e tipo de cliente e mostre o valor a pagar. 3 1. Permitir o registo dos clientes e caracterização adequada 4 2
2. Permitir o registo dos consumos de cada cliente (mensalmente) 5 3. a) Criar função a invocar da folha de consumos, que devolva o valor a cobrar por cada linha de consumos terá um parâmetro, m3 consumidos). Esta função será depois invocada da célula adequada da folha de cálculo. Option Explicit Const escn1 = 3.5, escn2 = 4, escn3 = 5, esci1 = 5, esci2 = 3, esci3 = 2.5, tx1 = 5, tx2 = 25 Function calc_gas_a(consumo) Valor do consumo do escalão 1 calc_gas_a = consumo * escn1 If consumo <= 20 Then calc_gas_a = escn1 * 10 + (consumo - 10) * escn2 calc_gas_a = escn1 * 10 + escn2 * 10 + (consumo - 20) * escn3 End Function Valor do consumo no escalão 2 Valor do consumo no escalão 3 6 3
3. b) Cálculo de acordo com alínea b), ou seja, introduzindo o conceito de tipo de 3.b) Criar função a invocar da folha de consumos, que devolva o valor a cobrar por cada linha de consumos terá dois parâmetros, m3 consumidos e tipo de cliente). Esta função será depois invocada da célula adequada da folha de cálculo. Aqui será necessário numa célula da folha de consumos, utilizando as funções índice e corresp, ir buscar o tipo de cliente à folha de clientes. 7 Function calc_gas_b(consumo, tp_cli) Select Case tp_cli Case "N" calc_gas_b = consumo * escn1 If consumo <= 20 Then calc_gas_b = escn1 * 10 + (consumo - 10) * escn2 calc_gas_b = escn1 * 10 + escn2 * 10 + (consumo - 20) * escn3 If consumo < 20 Then calc_gas_b = calc_gas_b + tx1 Case "I" calc_gas_b = consumo * esci1 If consumo <= 20 Then calc_gas_b = esci1 * 10 + (consumo - 10) * esci2 calc_gas_b = esci1 * 10 + esci2 * 10 + (consumo - 20) * esci3 If consumo < 20 Then calc_gas_b = calc_gas_b + tx2 Case calc_gas_b = "Tipo de Cliente Inválido" End Select End Function 8 4
4. Criar sub que aceite o consumo e tipo de cliente e mostre o valor a pagar. Sub calc_val() Dim tipo_cli As String * 1, resp As Integer Dim val_con As Integer, val_pag As Currency tipo_cli = InputBox("Indique o Tipo de cliente") Loop Until tipo_cli = "I" Or tipo_cli = "N" Or tipo_cli = "" val_con = Val(InputBox("Consumo do Mês")) Loop Until val_con >= 0 val_pag = calc_gas_b(val_con, tipo_cli) MsgBox ("O Valor a pagar pelo consumo de " & val_con & " m3" & Chr(13) & _ " de um cliente tipo " & tipo_cli & " é de: " & Format(val_pag, "currency")) resp = MsgBox("Novo Cálculo? ", vbyesno) Loop Until resp = 7 End Sub 9 5