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.
#43465
Meus caros... estou desenvolvendo um código para facilitar minha vida no trabalho... sou iniciante no VBA, e já ha alguns dias programando e estudando percebi que eu estava repetindo muito um código, e decidi torna-lo um código "mãe", usado os argumentos Byref para indicar as variaveis da chamada da função ao invés de ficar repetindo o código
Alguns pontos importantes

Criei um módulo de classe chamado clsServicos
Tenho um userform para fazer o front, receber o input do usuário

Abaixo podem ver que eu coloco "ByRef cls as clsServicos" para quando eu chamar essa rotina "limpeza" em uma outra rotina minha (btn_cadlimp_Click, "o código está abaixo da rotina limpeza"), eu indique um nome para o objeto da classe e preciso que ele já crie esse objeto... vejam na rotina btn_cadlimp_Click que quando eu chamo a rotina limpeza indico no argumento cls a palavra limp, pois eu preciso que o limp seja um novo objeto da minha classe e assuma o papel do cls, mas não consigo de jeito nenhum... alguém poderia me dar uma luz... achei pouco material na internet que ficasse claro se eu consigo fazer isto que estou querendo. Vou deixar em vermelho negrito as partes que cito no texto.

Sub limpeza(ByRef cls As clsServicos, ByRef serv As String, ByRef desc As String, ByRef L As Double, ByRef B As Double, ByRef H As Double, ByRef Q As Double)

Dim rgtlimp As String
Dim rgtlimp2 As String
'Dim cls As clsServicos
Set cls = New clsServicos
Dim total As String

'servico = UserForm1.ComboBox1.Value 'ajustar para a devida combobox
total = Len(serv)
traco = InStr(1, serv, "-")
cls.servico = Left(serv, traco - 2)

Set pesquisa = Sheets("planilhanull").Cells.Find(What:=cls.servico, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False) 'váriavel (trocar)

cls.codigo = pesquisa.Offset(0, -1).Value
cls.descricao = desc
cls.preco = pesquisa.Offset(0, 3).Value
cls.unidade = pesquisa.Offset(0, 1).Value

If cls.unidade = "M2" Then

cls.comprimento = L '
cls.largura = B
cls.quantd = Q
cls.area = cls.comprimento * cls.largura * cls.quantd

--------------------------------------------------------------------------------------------------------------

Public Sub btn_cadlimp_Click()
Dim unidade As String

servico = UserForm1.ComboBox1.Value
total = Len(servico)
traco = InStr(1, servico, "-")
Valid = Left(servico, traco - 2)

Set pesquisa = Sheets("MEMORIAL").Cells.Find(What:=Valid, LookIn:=xlValues, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False)

If pesquisa Is Nothing Then

Call Módulo1.limpeza(limp, ComboBox1.Value, txt_desclimp.Value, txt_climpezacamada.Value, txt_llimpezacamada.Value, txt_alimpezacamada.Value, txt_qlimpezacamada.Value)

Else

Módulo3.regLimp

End If


End Sub
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