A célula onde está o valor de horas tem que estar no formato hhh:mm:ss formatada com o texto
Código da função:
Function Hora2Decimal(Hora As String) As Double
Dim sHoras As String
Dim sMinuto As String
Dim sSegundo As String
Dim iHora As Integer
Dim iMinuto As Integer
Dim iSegundo As Integer
sHoras = Left(Hora, Len(Hora) - 6)
sMinuto = Mid(Hora, Len(Hora) - 4, 2)
sSegundo = Right(Hora, 2)
iHora = CInt(sHoras)
iMinuto = CInt(sMinuto)
iSegundo = CInt(sSegundo)
Hora2Decimal = CLng(iHora) + (iSegundo / 3600) + (iMinuto / 60)
End Function
Este código deve ser colocado em um módulo.
Exemplo:
Chamada da função:
quinta-feira, 6 de fevereiro de 2014
Colocar suas funções personalizadas permanentes no Excel 2007
Em um post anterior “Criar funções personalizadas no Microsoft Excel 2007”, expliquei como escrever uma função que transforma um número de segundo para o formato “hh:mm:ss", porém o arquivo com a função deveria ser incluído em cada nova planilha que fosse criada.
Para tornar esta função disponível toda vez que o Excel 2007 é carregado, é só seguir os passos abaixo:
1) Salve o arquivo com suas procedures, (pode ter várias no mesmo arquivo), com o formato “Suplemento do Excel(*.xlam). Clique no ícone do Windows Conforme Figura abaixo:
Depois em Salvar Como:
Escolha o Tipo de Arquivo “Suplemento do Excel(*.xlam)” no ComboBox, escolha a pasta onde será gravado o arquivo e dê um nome a ele, depois é só clicar no botão salvar.
Pronto, você acabou de gerar um Suplemento para o Excel 2007. Agora feche o Excel e abra novamente(outra instãncia).
Clique novamento no ícone do Windows Conforme Figura abaixo:
Pronto, agora toda vez que o Excel for aberto, suas funções estarão disponíveis.
segunda-feira, 3 de fevereiro de 2014
Criar funções personalizadas no Microsoft Excel 2007
Apesar da grande quantidade de funções disponíveis no Microsoft Excel, às vezes é necessária uma procedure que desempenhe um cálculo ou tome uma ação específica, e, às vezes é muito mais fácil escrever um código para estes casos que montar fórmulas muito grandes e de difícil manutenção.
O Microsoft Excel oferece a possibilidade de criarmos nossas próprias procedures através da linguagem de programação VBA (Visual Basic for Aplication), disponível em todas as suas versões.
Através desta linguagem, pode-se desenvolver programas extremamente complexos ou escrever funções simples que facilitam o trabalho e aumentam a produtividade do usuário.
Neste post vou mostrar como criar uma função para efetuar a transformação de segundos em horas:minutos:segundos.
Existem dois tipos de procedures que podem ser criadas com VBA, as Subrotinas e as Funções. A diferença básica entre elas é que as Funções retornam valores e as Subrotinas não. As Funções são iniciadas com a palavra chave Function e as Subrotinas são iniciadas com a palavra chave Sub e terminam com as palavras chaves End Function e End Sub, respectivamente.
Exemplos:
1) Função
Function Seg2HHmmss(Seg as string)
‘Comentário sobre a procedure Código . .
Seg2HHmmss = Retorno da função
End Function
2) SubRotina
Sub ConectrBancoDeDados(BancoDeDados as String)
‘Comentário sobre a procedure Código . .
End Sub
Passos para criar uma função personalizada no Excel 2007
Abra o Microsoft Excel Se a aba Desenvolvedor não estiver visível:
Clique no ícone do Windows Conforme Figura abaixo:
Isto fará com que a aba Desenvolvedor fique visível. Depois escolha Visual Basic nesta aba, o que fará com que abra o Editor de Códigos do Visual Basic.
Clique com o botão direito do Mouse no nome da pasta de trabalho, escolha Inserir, depois Módulo como na figura abaixo.
Será aberto o Módulo para que seja digitado o código:
o código conforme abaixo: Observe que o Nome da Função é SegParaHHMMSS
Código da Função:
Function SegParaHHMMSS(Valor As Long) As String
‘Transforma segundos em horas minutes e segundos ‘Declaração de variáveis
Dim lHora As Long
Dim lMinuto As Long
Dim lSegundo As Long
Dim lAuxiliar As Long
lAuxiliar = Valor
lHora = Int(lAuxiliar / 3600)
lAuxiliar = lAuxiliar - (lHora * 3600)
lMinuto = Int(lAuxiliar / 60)
lSegundo = lAuxiliar - (lMinuto * 60)
‘Retorno da função
SegParaHHMMSS = Format(lHora, "00") & ":" & Format(lMinuto, "00") & ":" & Format(lSegundo, "00")
End Function
Testar a função
Feche o editor de Códigos do Visual Basic e vá para a planilha do Excel. Na Célula A1, Coloque o valor em segundos para fazer a conversão: Exemplo 36458 Posicione o cursor na Célula A2 e digite o sinal de igual “=” para ativar a barra de fórmulas, depois digite SegParaHHMMSS(A1). Quando finalizar aperte Enter e verá o valor convertido na Célula A2, “10:07:38”.
Dica: Pode ser usado a Barra de Fórumlas para inserir a Função conforme figura abaixo:
Na Caixa Valor, clique na célula “A1”, depois Enter, que o valor será convertido.
O Microsoft Excel oferece a possibilidade de criarmos nossas próprias procedures através da linguagem de programação VBA (Visual Basic for Aplication), disponível em todas as suas versões.
Através desta linguagem, pode-se desenvolver programas extremamente complexos ou escrever funções simples que facilitam o trabalho e aumentam a produtividade do usuário.
Neste post vou mostrar como criar uma função para efetuar a transformação de segundos em horas:minutos:segundos.
Existem dois tipos de procedures que podem ser criadas com VBA, as Subrotinas e as Funções. A diferença básica entre elas é que as Funções retornam valores e as Subrotinas não. As Funções são iniciadas com a palavra chave Function e as Subrotinas são iniciadas com a palavra chave Sub e terminam com as palavras chaves End Function e End Sub, respectivamente.
Exemplos:
1) Função
Function Seg2HHmmss(Seg as string)
‘Comentário sobre a procedure Código . .
Seg2HHmmss = Retorno da função
End Function
2) SubRotina
Sub ConectrBancoDeDados(BancoDeDados as String)
‘Comentário sobre a procedure Código . .
End Sub
Passos para criar uma função personalizada no Excel 2007
Abra o Microsoft Excel Se a aba Desenvolvedor não estiver visível:
Clique no ícone do Windows Conforme Figura abaixo:
Clique no botão Opções do Excel e habilite a Caixa de seleção “Mostrar guia Desenvolvedor na Faixa de Opções”
Isto fará com que a aba Desenvolvedor fique visível. Depois escolha Visual Basic nesta aba, o que fará com que abra o Editor de Códigos do Visual Basic.
Clique com o botão direito do Mouse no nome da pasta de trabalho, escolha Inserir, depois Módulo como na figura abaixo.
Será aberto o Módulo para que seja digitado o código:
o código conforme abaixo: Observe que o Nome da Função é SegParaHHMMSS
Código da Função:
Function SegParaHHMMSS(Valor As Long) As String
‘Transforma segundos em horas minutes e segundos ‘Declaração de variáveis
Dim lHora As Long
Dim lMinuto As Long
Dim lSegundo As Long
Dim lAuxiliar As Long
lAuxiliar = Valor
lHora = Int(lAuxiliar / 3600)
lAuxiliar = lAuxiliar - (lHora * 3600)
lMinuto = Int(lAuxiliar / 60)
lSegundo = lAuxiliar - (lMinuto * 60)
‘Retorno da função
SegParaHHMMSS = Format(lHora, "00") & ":" & Format(lMinuto, "00") & ":" & Format(lSegundo, "00")
End Function
Testar a função
Feche o editor de Códigos do Visual Basic e vá para a planilha do Excel. Na Célula A1, Coloque o valor em segundos para fazer a conversão: Exemplo 36458 Posicione o cursor na Célula A2 e digite o sinal de igual “=” para ativar a barra de fórmulas, depois digite SegParaHHMMSS(A1). Quando finalizar aperte Enter e verá o valor convertido na Célula A2, “10:07:38”.
Dica: Pode ser usado a Barra de Fórumlas para inserir a Função conforme figura abaixo:
Na Caixa Valor, clique na célula “A1”, depois Enter, que o valor será convertido.
Assinar:
Postagens (Atom)