Ola
Sou novo no forum, participo de um de excel "planilhando"
ainda não sei usar o access " vou aprender aqui"
e desculpa por este ser minha primeira participação,
"qualquer coisa o moderador pode apagar"
Eu sempre li sobre regras de programação e até levei alguns foras e puxões de orelha em discussões acirradas por não seguir regra nenhuma
já tentei e tentei seguir tais regras... não usar variáveis publicas e deixar as variáveis o mais explicativo possível..., mas acabo largando o projeto de lado.
e tbm já li relatos de pessoas que simplesmente embaralham e bagunçam o máximo possível para dificultar o roubo da ideia.
depois de tantas tentativas frustradas acabei desistindo e aceitando as minhas limitações
"simplesmente não consigo acompanhar codigos escritos com palavras muito grandes, não lembro nomes de funções complicados"
agora a minha única regra é me divertir escrevendo o código, ele funcionar e ser o mais eficiente possível
mesmo que para isso tenha que criar meu próprio código para função que já existe
não sou profissional
uso variaveis tipo
Li,Lf,Ci,Cf,Lio,Pio...
uso muito arrays com laços for next, if , goto, gosub
umas funções simples que fiz para uma pessoa que acompanha a mega sena:
retorna o fechamento de um ciclo a partir de um sorteio especifico ( quando saiu todas as 60 dezenas)
- Código:
Function CicloTo(concursoNum As Long)
Dim valt(1 To 60) As Long, linSort()
With ThisWorkbook.Worksheets("Mega-Sena")
lf = .Cells(Rows.Count, 1).End(xlUp).Row + 1
L = concursoNum + 1
ijSini:
linSort = .Range("C" & L, "H" & L).Value2
For v = 1 To 6
valt(linSort(1, v)) = 1
Next
If L < lf Then
For v = 1 To 60
If valt(v) = 0 Then L = L + 1: GoTo ijSini:
Next
End If
End With
CicloTo = L - 1
End Function
conta quantas vezes saiu o conjunto de dezenas e retorna o ultimo concurso que saiu
- Código:
Function Cont_grupo(ParamArray Grupos_juntos() As Variant)
Dim TG1 As Long, TtL As Long, Coluno(), L1 As Long, C1 As Long
With ThisWorkbook.Worksheets("Mega-Sena")
lf1 = .Cells(Rows.Count, 1).End(xlUp).Row
Coluno = .Range("A2:H" & lf1).Value2
End With
Cc1 = UBound(Coluno, 2)
Lc1 = UBound(Coluno, 1)
CC2 = UBound(Grupos_juntos, 1)
For L1 = Lc1 To 1 Step -1
TtL = 0
For C1 = 3 To Cc1
For c2 = 0 To CC2
If Coluno(L1, C1) = Grupos_juntos(c2) Then
TtL = TtL + 1:
If TtL = CC2 + 1 Then
TG1 = TG1 + 1:
If TG1 = 1 Then concs = Coluno(L1, 1)
GoTo lk0
End If
End If
Next
Next
lk0:
Next
Cont_grupo = " total= " & TG1 & " ultimo= " & concs
End Function
nesses ainda usei certas regras, mas apenas pq as macros são simples e pequenas
mas uma das minhas primeiras macros que desenvolvo até hoje quando estou com animo e já está com 600 linhas fora as macros e funções auxiliares é composto basicamente por isso...
- Código:
If Op = 1 Then
t = 0: Loi = Loi + Lig
If OZig_L = False Then
If Loi = OLf Then
t = 1
If Oquadante_L = True Then GoSub OCoL: If t = 1 Then OLf = OLf + OqL: OLi = OLi + OqL: t = 0
Loi = OLi + Lig
End If
Else
If Loi = OLi Or Loi = OLf Then
t = 1
If Oquadante_L = True Then GoSub OCoL: If t = 1 Then OLf = OLf + OqL: OLi = OLi + OqL: t = 0: Loi = Loi + OqL
Lig = Lig * -1: Loi = Loi + Lig
End If
End If
End If
Return
como pode ver não costumo nem pular de linha ou colocar comentários no meio da macro
e explico,
é para consegui acompanhar o fluxo de execução
"para mim de nada vale nome de variáveis grandes, e explicações no meio da macro, eu acabo me perdendo e tendo que trocar tudo"
acho o importante é aprender, gostar de criar, se tiver, entender e aceitar suas limitações e se adaptar ou até criar regras que consiga acompanhar
e como dizem...
existe mil maneiras de se fazer, invente a sua
"ressalva,
Se trabalhar em grupo tem que seguir todas as regras impostas (a não ser que vc seja o chefe
), ou até para outros que está pagando tbm pela ideia e não apenas pelo projeto pronto. "
tudo bem que oq eu falei somente serve para quem está começado ir se adaptando
nesse ponto acho que vale algo
o pessoal fala para os iniciantes declarar todas as variaveis, que uma usa mais memoria, é mais rápida...
se a pessoa não sabe nem como usar os comandos ou para que serve na pratica cada tipo de variável
como saber se tem que usar long, intenge, byte ...?
pelo menos no uso do vba de inicio não se deve preocupar com isso e apenas curtir o aprendizado fazendo coisas que apenas funcionam e pegar o seu próprio jeito e ritmo, senão apenas trava em algo que acha monótono ou chato
ultimamente que passei a declarar as variaveis e esbarrei em um problema de declaração
uso de long em divisão , eu não sei quantas vezes eu refiz a macro pq a conta não batia e quando não declarei vai e dá certo.
apesar de ser contas com dezenas apenas, entra na questão de pontos flutuantes e long não estava dando conta
depois mudei para Double, funcionou.
mas vivia dando erros aleatórios e depois de varias reformulações da macro e totalmente deixada de lado descobrir que Double tbm não dava conta e tinha que ser Currency
No fim, a maior regra a se seguir é
deixar as regras de lado e se divertir aprendendo e fazendo coisas que funciona, mesmo que tudo bagunçado.
para então escolher as regras que mais lhe ajude a ser um profissional capaz de fazer um trabalho satisfatório para o cliente.
falaram de um livro que cita regras,
mas já repararam que as próprias linguagens não seguem regras e cada uma tem suas particularidades mesmo para coisas simples como um loop com for e cada um tem maneira diferente de se escrever ?
bem, melhor parar por aqui senão daqui a pouco terei escrito meu proprio livro de como não seguir as regras
mas como falei, caso o moderador não ache apropriado a minha declaração prolongada pode apagar
Até.