O gerente do departamento pediu que você transforme o input do sistema de controle de ligações, para um relatório mais amigável a ser apresentado nas reuniões. É cobrado o valor de R$ 1,30 por pulso(forma de medida da duração da chamada). Os nomes dos clientes devem ter as primeiras letras maiúsculas.
Exercício Resolvido
Resolvendo o problema
-
Declaramos as variáveis e encontramos a última linha para realizarmos um loop
Dim UltLinha As Long
Dim i As Integer
UltLinha = Cells(Rows.Count, 1).End(xlUp).Row
-
Iremos usar a opção de texto para colunas dentro do loop e acabaremos por subscrever alguns dados. Por isto, desativamos os alertas do Excel para evitar que a cada iteração recebamos um alerta (lembre-se de ativa-lo novamente ao final do loop).
Application.DisplayAlerts = False
-
Criamos o loop For Next até a ultima linha e utilizamos o método TextToColumns. Como os dados do problema aparecem separados pelo traço (-) configuramos este critério para separação dos dados nas colunas.
For i = 4 To UltLinha
Cells(i, 1).TextToColumns Destination:=Cells(i, 3), DataType:=xlDelimited, Other:=True, OtherChar:="-"
-
O Excel entende os parenteses () do ddd como número negativo. Sendo assim, utilizamos a função Abs para considerar apenas valor absoluto.
Cells(i, 4).Value = Abs(Cells(i, 4).Value)
-
Agrupamos as duas partes do telefone, que estavam divididas pelo traço em uma única célula, e deslocamos o nome para a célula que fica vazia onde tinha a segunda parte do telefone.
Cells(i, 5).Value = Cells(i, 5).Value & Cells(i, 6).Value
Cells(i, 6).Value = Cells(i, 7).Value
-
Calculamos o valor a pagar multiplicando os pulsos pelo custo (que foi dado no enunciado do problema). Tornamos as letras do nome próprio maiúsculas com a função StrConv e o argumento vbProperCase
Cells(i, 7).Value = Cells(i, 3) * 1.3
Cells(i, 6).Value = StrConv(Cells(i, 6), vbProperCase)
Next i
Código Consolidado
Sub Resolucao()
Dim UltLinha As Long
Dim i As Integer
UltLinha = Cells(Rows.Count, 1).End(xlUp).Row
Application.DisplayAlerts = False
For i = 4 To UltLinha
Cells(i, 1).TextToColumns Destination:=Cells(i, 3), DataType:=xlDelimited, Other:=True, OtherChar:="-"
Cells(i, 4).Value = Abs(Cells(i, 4).Value)
Cells(i, 5).Value = Cells(i, 5).Value & Cells(i, 6).Value
Cells(i, 6).Value = Cells(i, 7).Value
Cells(i, 7).Value = Cells(i, 3) * 1.3
Cells(i, 6).Value = StrConv(Cells(i, 6), vbProperCase)
Next i
Application.DisplayAlerts = True
End Sub
SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.
Excel ® é uma marca registrada da Microsoft Corporation.
© 2024 SuperExcelVBA | SOBRE