Instrução Select Ca...
 
Notifications
Clear all

Instrução Select Case para atribuir valor a variável

5 Posts
3 Usuários
0 Reactions
1,110 Visualizações
(@bellizzi)
Posts: 0
New Member
Topic starter
 

Boa tarde amigos,

Escrevi uma instrução select case que compara um valor de uma variavel c. Caso este valor seja igual a um dos casos estabelecidos, que atribuir uma string a uma variavel d.
Entretanto estou tendo erro para inserir o valor da variavel d e para parar o select case caso seja encontrado o valor desejado.

Segue meu código:

Select Case c
Case c = "1"
d = "Jan"
Case c = "2"
d = "Fev"
Case c = "3"
d = "Mar"
Case c = "4"
d = "Abr"
Case c = "5"
d = "Mai"
Case c = "6"
d = "Jun"
Case c = "7"
d = "Jul"
Case c = "8"
d = "Ago"
Case c = "9"
d = "Set"
Case c = "10"
d = "Out"
Case c = "11"
d = "Nov"
Case c = "12"
d = "Dez"
Case Else
d = ActiveCell.Value
MsgBox "O valor encontrado é" & " " & d
End Select

Desde já agradeço pela ajuda.

 
Postado : 08/01/2015 11:52 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Primeiramente, a sintaxe está errada.

Em vez de usar:
Case c = "1"

Use:
Case Is = "1"

Mas não só isso. Como vc está usando números, não use parênteses. (Parênteses, somente para strings).

Então, vc devee, na verdade, trocar isso:
Select Case c
Case c = "1"

Por isso:
Case Is = 1

Outra coisa, a msgbox deve vir depois do end select, seria assim:

Select Case c
Case Is = 1
d = "Jan"
Case Is = 2
d = "Fev"
Case Is = 3
d = "Mar"
Case Is = 4
d = "Abr"
Case Is = 5
d = "Mai"
Case Is = 6
d = "Jun"
Case Is = 7
d = "Jul"
Case Is = 8
d = "Ago"
Case Is = 9
d = "Set"
Case Is = 10
d = "Out"
Case Is = 11
d = "Nov"
Case Is = 12
d = "Dez"
Case Else
d = ActiveCell.Value
End Select
MsgBox "O valor encontrado é" & " " & d

Por fim, se vc quer pegar o nome abreviado dos meses, tente isso:

If c > 12 Then
    d = ActiveCell.Value
Else
    d = Left(MonthName(c), 3)
End If
MsgBox "O valor encontrado é" & " " & d

Abs

 
Postado : 08/01/2015 12:14 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Bom eu ainda estou confuso!

Sub AleVBA_14055()

Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
    xTitleId = "AleVBA"
    Set WorkRng = Application.Selection
    Set WorkRng = Application.InputBox("Selecione o intervalo", xTitleId, WorkRng.Address, Type:=8)
    For Each Rng In WorkRng
        Rng.Value = VBA.Format(Rng.Value * 29, "mmm")
    Next
    
End Sub

Att

 
Postado : 08/01/2015 12:23 pm
(@bellizzi)
Posts: 0
New Member
Topic starter
 

Agradeço aos dois pela ajuda.

Consegui resolver parecido como o gtsalikis explicou no inicio. Apenas retirei o c = do case e funcionou perfeitamente aqui.

ficou assim o código completo

Sub completar_dtefetiva()

Dim a, b, c As Integer, d As String

Worksheets("Mapa 2015").Select

Range("b8").Select

Do While ActiveCell.Value <> ""

a = ActiveCell.Value

Worksheets("Base Orçt 2015").Select
Range("b3").Select

While a <> ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Wend

b = ActiveCell.Value

If a <> b Then
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(0, 3).Select
c = ActiveCell.Value
Select Case c
Case "1"
d = "Jan"
Case "2"
d = "Fev"
Case "3"
d = "Mar"
Case "4"
d = "Abr"
Case "5"
d = "Mai"
Case "6"
d = "Jun"
Case "7"
d = "Jul"
Case "8"
d = "Ago"
Case "9"
d = "Set"
Case "10"
d = "Out"
Case "11"
d = "Nov"
Case "12"
d = "Dez"
Case Else
d = ActiveCell.Value
MsgBox "O valor encontrado é" & " " & d
End Select

Worksheets("Mapa 2015").Select
ActiveCell.Offset(0, 2).Select
ActiveCell.Value = d
ActiveCell.Offset(1, -2).Select

End If

Loop

End Sub

Somente explicando ao alexandre vba, o msgbox mantive dentro do select case / case else por ter de ser exibido se e somente se nenhum case for cumprido. Mas mesmo assim obrigado pela ajuda e dica!
Tenho estudado outras linguagens de programação e com sua explicação consegui entender um pouco mais como usar for each em vba, sabia utilizar somente em Java Script.

 
Postado : 08/01/2015 1:02 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Obrigado por retornar e explicar sua dúvida, eu fico feliz que resolveu seu problema!

Att

 
Postado : 08/01/2015 1:10 pm