Página 1 de 1
Gerar número da ordem de serviço
Enviado: 01 Set 2020 às 16:21
por amarall04
Boa tarde,
Estou buscando melhorar as minhas planilhas de trabalho então venho me aperfeiçoando e aplicando algumas macros e gostaria de uma ajuda para escrever a macro para a função abaixo, pois não estou conseguindo.
O numero da O.S é composto da sigla da filial seguido pelo ano vigente e o numero sequencial, porém não estou conseguindo escrever a macro.
EX.: DP2020/001234 OU;
TE2020/001235
A ideia é entrar com o nome da empresa e automaticamente gerar o numero conforme o modelo.
Empresa____________N.° Ord. Serviço
EMPRESA 1 (DP)__________DP2020/001234
EMPRESA 2 (TE)__________TE2020/001235
Desde ja agradeço a ajuda.
Grato.
Fabio
Re: Gerar número da ordem de serviço
Enviado: 02 Set 2020 às 09:14
por babdallas
Anexa um pequeno exemplo, por favor.
Re: Gerar número da ordem de serviço
Enviado: 02 Set 2020 às 09:50
por amarall04
Blz,
eu adicionei o modelo e deixei em amarelo a célula que gera seria o código. hoje eu fiz através de fórmulas, mas não consigo converter em vba.
Re: Gerar número da ordem de serviço
Enviado: 02 Set 2020 às 10:59
por babdallas
A partir da linha 16, cada linha soma 1 no código (a partir do 1234)?
Re: Gerar número da ordem de serviço
Enviado: 02 Set 2020 às 11:44
por babdallas
Veja se ajuda:
Código: Selecionar todosOption Explicit
Public Function GerarOS(ByVal strEmpresa As String, _
ByVal lngIni As Long, _
ByVal lngAno As Long) As String
Dim strCod As String
Dim dicEmp As Object
Dim lobTab As ListObject
Dim lngLin As Long
Set lobTab = wshAux.ListObjects("tbEmp")
Set dicEmp = VBA.CreateObject("Scripting.Dictionary")
For lngLin = 1 To lobTab.DataBodyRange.Rows.Count
If Not dicEmp.Exists(lobTab.DataBodyRange.Cells(lngLin, 1).Value2) Then
dicEmp.Add lobTab.DataBodyRange.Cells(lngLin, 1).Value2, _
lobTab.DataBodyRange.Cells(lngLin, 2).Value2
End If
Next lngLin
strCod = dicEmp(strEmpresa) & lngAno & "/" & _
VBA.String(6 - VBA.Len(lngIni), "00") & _
(lngIni + Application.Caller.Row - 16)
GerarOS = strCod
Set dicEmp = Nothing
Set lobTab = Nothing
End Function
Re: Gerar número da ordem de serviço
Enviado: 02 Set 2020 às 13:27
por amarall04
babdallas escreveu:A partir da linha 16, cada linha soma 1 no código (a partir do 1234)?
Sim, mas este valor será atualizado na aplicação da tabela. Pelo que eu entendi você me indicou uma função e estou tentando entende-la. o intuito de gerar o código que seja feito a partir do momento que insiro a o nome da empresa e caso eu altere o nome da empresa ele altere o código.
Desde ja agradeço a atenção.
Re: Gerar número da ordem de serviço
Enviado: 02 Set 2020 às 13:40
por babdallas
Uma pequena correção para tornar a função volátil. Esta função tem como argumentos o nome da empresa, o valor inicial do número sequencial e o ano.
Código: Selecionar todosOption Explicit
Public Function GerarOS(ByVal strEmpresa As String, _
ByVal lngIni As Long, _
ByVal lngAno As Long) As String
Dim strCod As String
Dim dicEmp As Object
Dim lobTab As ListObject
Dim lngLin As Long
Application.Volatile
Set lobTab = wshAux.ListObjects("tbEmp")
Set dicEmp = VBA.CreateObject("Scripting.Dictionary")
For lngLin = 1 To lobTab.DataBodyRange.Rows.Count
If Not dicEmp.Exists(lobTab.DataBodyRange.Cells(lngLin, 1).Value2) Then
dicEmp.Add lobTab.DataBodyRange.Cells(lngLin, 1).Value2, _
lobTab.DataBodyRange.Cells(lngLin, 2).Value2
End If
Next lngLin
strCod = dicEmp(strEmpresa) & lngAno & "/" & _
VBA.String(6 - VBA.Len(lngIni), "00") & _
(lngIni + Application.Caller.Row - 16)
GerarOS = strCod
Set dicEmp = Nothing
Set lobTab = Nothing
End Function
Gerar número da ordem de serviço
Enviado: 03 Set 2020 às 22:29
por amarall04
Boa noite, desculpe a demora mas estava em viajem... obrigado me ajudou muito.