Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por amarall04
#58372
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
Por babdallas
#58389
Anexa um pequeno exemplo, por favor.
Por amarall04
#58390
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.
Você não está autorizado a ver ou baixar esse anexo.
Por babdallas
#58392
A partir da linha 16, cada linha soma 1 no código (a partir do 1234)?
Por babdallas
#58393
Veja se ajuda:
Código: Selecionar todos
Option 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
Você não está autorizado a ver ou baixar esse anexo.
Por amarall04
#58401
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.
Por babdallas
#58402
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 todos
Option 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
Você não está autorizado a ver ou baixar esse anexo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord