-----GRUPO 1 Option Explicit 'Aceita 2 números e coloca-os nas células A1 e A2 da folha activa ' Este procedimento deverá ser chamado de uma folha p. ex. através de um botão lá colocado Sub fp6_i1a() Dim N1 As Integer, N2 As Integer N1 = Val(InputBox("Indique o número a colocar na célula A1 da folha activa", "Entrada de Números")) N2 = Val(InputBox("Indique o número a colocar na célula A2 da folha activa", "Entrada de Números")) ActiveSheet.Cells(1, 1) = N1 ActiveSheet.Cells(2, 1) = N2 'Aceita 2 números e coloca-os nas Células A1 e A2 da folha 1 Sub fp6_i1b() Dim N1 As Integer, N2 As Integer N1 = Val(InputBox("Primeiro valor")) N2 = Val(InputBox("Segundo valor")) Worksheets("Folha1").Cells(1, 1) = N1 Worksheets("Folha1").Cells(2, 1) = N2 'Copia valores da 1.ª coluna da 1.ª colha de cálculo para a 3.ª coluna da 2.ª folha de cálculo Aceita 2 números e coloca-os nas células A1 e A2 da folha activa Sub fp6_i2() lin = 1 Do While Worksheets("Folha1").Cells(lin, 1) <> "" Worksheets("Folha2").Cells(lin, 3) = Worksheets("Folha1").Cells(lin, 1) 'Aceita 2 números e coloca-os nas linha 1 e 2 da coluna indicada da folha 1 Sub fp6_i3() Dim N1 As Integer, N2 As Integer, col As Integer N1 = Val(InputBox("Primeiro valor", "Entrada de valores")) N2 = Val(InputBox("Segundo valor", "Entrada de valores")) col = Val(InputBox("Coluna onde se pretende colocar os números", "A linhas serão a 1.ª e 2.ª")) Worksheets("Folha1").Cells(1, col) = N1 Worksheets("Folha1").Cells(2, col) = N2
-----GRUPO 2 Option Explicit 'Função que calcula o preço de uma chamada de um telemóvel ' Invoca 2 outras funções ' 1.ª encarrega-se de devolver a coluna correspondente à rede de destino da chamada ' 2.ª encarrega-se de devolver a linha correspondente ao tipo tarifa ' correspondente à hora a que foi efectuada a ligação ' com a linha e coluna depois vai à folha de tarifas e lê o valor / minuto da chamada efectuada Function custo_chamada(periodo, Duracao, Rede_Destino) Dim lin, col As Integer Dim Valor_Minuto As Single lin = procura_linha(periodo) col = procura_coluna(rede_destino) If (lin = 0 Or col = 0) Then custo_chamada = "Não Definido" Valor_Minuto = Worksheets("tarifas_tmn").Cells(lin, col) If Duracao <= 60 Then custo_chamada = Valor_Minuto custo_chamada = Valor_Minuto + (Duracao - 60) * (Valor_Minuto / 60) 'Função que dada a rede para onde foi efectuada uma chamada (parâmetro da função), 'devolve a coluna correspondente na folha de tarifas Function procura_coluna(rede_destino) Dim col As Integer col = 2 Do While Worksheets("tarifas_tmn").Cells(1, col) <> "" If Worksheets("tarifas_tmn").Cells(1, col) = Rede_Destino Then procura_coluna = col col = col + 1 'Função que dado o período do dia em que foi efectuada uma chamada (parâmetro da função), 'devolve a linha correspondente na folha de tarifas Function procura_linha(periodo) Do While Worksheets("tarifas_tmn").Cells(lin, 1) <> "" If Worksheets("tarifas_tmn").Cells(lin, 1) = Periodo Then procura_linha = lin
-----GRUPO 3 Option Explicit '------------------------------F6.5---------------------------------- Function tipo_cliente(cod_cli) Do While Worksheets("Clientes").Cells(lin, 1) <> "" If Worksheets("Clientes").Cells(lin, 1) = cod_cli Then tipo_cliente = Worksheets("clientes").Cells(lin, 6) '------------------------------F6.6---------------------------------- Function calc(tp_cli, consumo), col As Integer col = proc_col(tp_cli) lin = proc_lin(consumo) If tp_cli = "N" Then calc = Worksheets("tarifa").Cells(lin, col) * consumo + 5 calc = Worksheets("tarifa").Cells(lin, col) * consumo + 25 Function proc_col(tp_cli) Dim c As Integer c = 2 Do While Worksheets("tarifa").Cells(1, c) <> "" If Worksheets("tarifa").Cells(1, c) = tp_cli Then proc_col = c c = c + 1 Function proc_lin(consumo) Do While Worksheets("tarifa").Cells(lin, 1) <> "" If Worksheets("tarifa").Cells(lin, 1) >= consumo Then proc_lin = lin
'------------------------------F6.7---------------------------------- Sub insere_cliente(), w As Worksheet Set w = Worksheets("clientes") lin = proc_linha_livre("clientes") w.cells(lin, 1) = InputBox("Código") w.cells(lin, 2) = InputBox("Nome") w.cells(lin, 3) = InputBox("Rua_num") w.cells(lin, 4) = InputBox("Lugar") w.cells(lin, 5) = InputBox("Código Postal") w.cells(lin, 6) = UCase(InputBox("Tipo cliente")) Function proc_linha_livre(folha) Do While Worksheets(folha).Cells(lin, 1) <> "" proc_linha_livre = lin '------------------------------F6.8---------------------------------- Sub preenche_totais() Dim mes As Integer, folha As String, lint As Integer, linc As Integer Dim ft As Worksheet, fc As Worksheet Dim soman As Long, somai As Long, ncn As Integer, nci As Integer mes = Val(InputBox("Mês")) folha = InputBox("Nome da folha") Set fc = Worksheets(folha) linc = 2 soman = 0 somai = 0 ncn = 0 nci = 0 Do While fc.cells(linc, 1) <> "" If fc.cells(linc, 5) = "N" Then soman = soman + fc.cells(linc, 8) ncn = ncn + 1 somai = somai + fc.cells(linc, 8) nci = nci + 1 linc = linc + 1 Set ft = Worksheets("totais") lint = proc_linha_livre("totais") ft.cells(lint, 1) = mes ft.cells(lint, 2) = ncn ft.cells(lint, 3) = soman ft.cells(lint, 4) = nci ft.cells(lint, 5) = somai
'------------------------------F6.9---------------------------------- ' OBS: NÃO ADICIONA NOVOS CLIENTES ' Sub cria_f_consumo(), col As Integer Dim nome_o, nome_d Dim fo As Worksheet, fd As Worksheet nome_o = InputBox("nome folha origem") nome_d = InputBox("nome folha destino") Sheets.Add Sheets(ActiveWorkbook.ActiveSheet.Name).Name = nome_d Set fo = Worksheets(nome_o) Set fd = Worksheets(nome_d) 'fo.copy 'fd.paste lin = 1 col = 1 Do While fo.cells(lin, col) <> "" fd.cells(lin, 1) = fo.cells(lin, 1) fd.cells(lin, 2) = fo.cells(lin, 3) For col = 4 To 8 fd.cells(lin, col).formula = fo.cells(lin, col).formula Next col = 1 fd.cells(1, 2) = "Val_anterior" fd.cells(1, 3) = "Val_actual" fd.columns("a:h").autofit fd.range("a1:h1").select With Selection.Font.Name = "Times New Roman".Size = 16 End With With Selection.HorizontalAlignment = xlcenter.verticalalignment = xlbottom End With Selection.Font.Bold = True fd.columns("a:h").autofit ' adiciona_clientes lin, nome_d RETIRADO 'Sub adiciona_clientes(lin, nome_d) ' Dim col As Integer ' Dim fc As Worksheet, fd As Worksheet ' Set fc = Worksheets("clientes") ' Set fd = Worksheets(nome_d) ' Do While fc.cells(lin, 1) <> "" ' fd.cells(lin, 1) = fc.cells(lin, 1) ' fd.cells(lin, 2) = 0 ' ' '
'------------------------------F6.10---------------------------------- Sub preenche_totais_10() Dim mes As Integer, folha As String, lint As Integer, linc As Integer, linant As Integer Dim ft As Worksheet, fc As Worksheet Dim soman As Long, somai As Long, ncn As Integer, nci As Integer Set ft = Worksheets("totais") lint = proc_linha_livre("totais") linant = lint - 1 If linant = 1 Then mes = Val(InputBox("Digite o mês inícial da folha totais")) folha = InputBox("Nome da folha que contém os consumos do mês " & mes) mes = ft.cells(linant, 1) + 1 folha = InputBox("Nome da folha que contém os consumos do mês " & mes) Set fc = Worksheets(folha) linc = 2 soman = 0 somai = 0 ncn = 0 nci = 0 Do While fc.cells(linc, 1) <> "" If fc.cells(linc, 5) = "N" Then soman = soman + fc.cells(linc, 8) ncn = ncn + 1 somai = somai + fc.cells(linc, 8) nci = nci + 1 linc = linc + 1 ft.cells(lint, 1) = mes ft.cells(lint, 2) = ncn ft.cells(lint, 3) = soman ft.cells(lint, 4) = nci ft.cells(lint, 5) = somai