O QUE TEM DE ERRADO...
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
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
Essa function não tem nenhum retorno
Por acaso essas variáveis são globais?!?!
Por acaso essas variáveis são globais?!?!
Já coloquei um retorno na function, mas ainda dá erro!!
Qto a ser globais não entendi me parecem que nao!!
Qto a ser globais não entendi me parecem que nao!!
ok; resolvido. não pode declarar as variaveis juntas.. devem ser separadas!!
A questão não é declarar as variaveis juntas. é que dá forma como foram declaras uma é do tipo Variant e outra do tipo String
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.
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.
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]
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]
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
porém agora fiquei curioso qual é o objetivo?
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