O QUE TEM DE ERRADO...

FPERIN 12/07/2012 17:35:02
#405952
Não consigo descobri o erro de byref nas rotinas abaixo.. antes funcionava.. agora nao mais...

Sub Testes()
Dim alfa, beta As String

alfa = [Ô]Jun[Ô]
beta = [Ô]Jul[Ô]
Call OperacoesMeses(alfa, beta)
End Sub

Public Function OperacoesMeses(ByRef nummes As String, ByRef nextmes As String) As String

If nummes = [Ô]Jan[Ô] Then
nummes = [Ô]01[Ô]
nextmes = [Ô]Fev[Ô]
ElseIf nummes = [Ô]Fev[Ô] Then
nummes = [Ô]02[Ô]
nextmes = [Ô]Mar[Ô]
ElseIf nummes = [Ô]Mar[Ô] Then
nummes = [Ô]03[Ô]
nextmes = [Ô]Abr[Ô]
ElseIf nummes = [Ô]Abr[Ô] Then
nummes = [Ô]04[Ô]
nextmes = [Ô]Mai[Ô]
ElseIf nummes = [Ô]Mai[Ô] Then
nummes = [Ô]05[Ô]
nextmes = [Ô]Jun[Ô]
ElseIf nummes = [Ô]Jun[Ô] Then
nummes = [Ô]06[Ô]
nextmes = [Ô]Jul[Ô]
ElseIf nummes = [Ô]Jul[Ô] Then
nummes = [Ô]07[Ô]
nextmes = [Ô]Ago[Ô]
ElseIf nummes = [Ô]Ago[Ô] Then
nummes = [Ô]08[Ô]
nextmes = [Ô]Set[Ô]
ElseIf nummes = [Ô]Set[Ô] Then
nummes = [Ô]09[Ô]
nextmes = [Ô]Out[Ô]
ElseIf nummes = [Ô]Out[Ô] Then
nummes = [Ô]10[Ô]
nextmes = [Ô]Nov[Ô]
ElseIf nummes = [Ô]Nov[Ô] Then
nummes = [Ô]11[Ô]
nextmes = [Ô]Dez[Ô]
ElseIf nummes = [Ô]Dez[Ô] Then
nummes = [Ô]12[Ô]
nextmes = [Ô]Jan[Ô]
End If

End Function
KERPLUNK 12/07/2012 17:47:36
#405953
Essa function não tem nenhum retorno

Por acaso essas variáveis são globais?!?!
FPERIN 12/07/2012 17:54:31
#405954
Já coloquei um retorno na function, mas ainda dá erro!!

Qto a ser globais não entendi me parecem que nao!!
FPERIN 12/07/2012 18:40:07
#405957
ok; resolvido. não pode declarar as variaveis juntas.. devem ser separadas!!
FFCOUTO 12/07/2012 19:08:16
#405959
A questão não é declarar as variaveis juntas. é que dá forma como foram declaras uma é do tipo Variant e outra do tipo String


Sub Testes()
[ô]Dim alfa, beta As String [ô]<-- alfa é do tipo Variant e beta do tipo String
Dim alfa As String, beta As String [ô]<-- agora as duas são do tipo String

alfa = [Ô]Jun[Ô]
beta = [Ô]Jul[Ô]
Call OperacoesMeses(alfa, beta)
End Sub


Se você declarar somente a última com algum tipo específico as outras serão do tipo Variant. Dessa forma a tua função pede duas variáveis do tipo String e uma que foi passada é do tipo Variant vai gerar erro.
WARLEYOLF1 13/07/2012 18:29:04
#406058
Fiz um código de calculo do proximo mês
melhorei o seu código
Esse código alem de ser menor é mais bem processado pelo precessador
Veja o código
Aqui:


[txt-color=#0000f0]Public Function[/txt-color] OperacoesMeses([txt-color=#0000f0]ByRef[/txt-color] nummes [txt-color=#0000f0]As Long[/txt-color]) [txt-color=#0000f0]As String[/txt-color]
[txt-color=#0000f0]Dim [/txt-color]Mes [txt-color=#0000f0]As String[/txt-color], Buffer [txt-color=#0000f0]As Variant[/txt-color]
Mes = [Ô]Janeiro|Fevereiro|Março|Abril|Máio|Junho|Julho|Agosto|Setembro|Outubro|Novembro|Dezembro[Ô]
Buffer = Split(Mes, [Ô]|[Ô])
OperacoesMeses = Buffer(nummes)
[txt-color=#0000f0]End Function[/txt-color]

[txt-color=#0000f0]Private Sub[/txt-color] Command1_Click()
MsgBox OperacoesMeses(1)
[txt-color=#0000f0]End Sub[/txt-color]
MARCELO.TREZE 14/07/2012 00:56:43
#406070
Bom colega acho que esta sua função ta meio sem nexo, sem querer ofender veja bem, raciocine comigo

Sub Testes()
Dim alfa, beta As String

alfa = [Ô]Jun[Ô]
beta = [Ô]Jul[Ô]
Call OperacoesMeses(alfa, beta)[txt-color=#e80000] <-- você coloca o mês atual e o proximo mes[/txt-color]
End Sub

Public Function OperacoesMeses(ByRef nummes As String, ByRef nextmes As String) As String

If nummes = [Ô]Jun[Ô] Then
nummes = [Ô]06[Ô]
nextmes = [Ô]Jul[Ô][txt-color=#e80000] <- se você ja colocou o proximo mes la em cima praque uma função[/txt-color]

você vai ter menos trabalho fazendo isso

Dim Alfa As String, Beta As String, NumMes As Integer
Alfa = [Ô]Jun[Ô]
NumMes = 6
Beta = [Ô]Jul[Ô]


porém agora fiquei curioso qual é o objetivo?


Tópico encerrado , respostas não são mais permitidas