erro de compilação:...
 
Notifications
Clear all

erro de compilação: O Argumento não é opcional

9 Posts
3 Usuários
0 Reactions
4,966 Visualizações
(@guilherme-a)
Posts: 7
Active Member
Topic starter
 

Boa noite,
estava digitando o seguinte código em VBA e quando fui testa-lo apareceu um erro de compilação (erro de compilação: O Argumento não é opcional). Alguém sabe qual pode ser o problema?

Sub verifica_mes()

    Dim UltLin As Long
    Dim aux As Integer
    Dim mes1 As String, mes2 As String, mes3 As String, mes4 As String, mes5 As String, mes6 As String, mes7 As String, mes8 As String, mes9 As String, mes10 As String, mes11 As String, mes12 As String
    mes1 = "Janeiro"
    mes2 = "Fevereiro"
    mes3 = "Março"
    mes4 = "Abril"
    mes5 = "Maio"
    mes6 = "Junho"
    mes7 = "julho"
    mes8 = "Agosto"
    mes9 = "Setembro"
    mes10 = "Outubro"
    mes11 = "Novembro"
    mes12 = "Dezembro"
    aux = 2
    
    UltLin = Worksheets("CM - Sem Investidor").Cells(Worksheets("CM - Sem Investidor").Rows.Count, 1).End(xlUp).Row
    
    Do Until aux >= UltLin
    If Month("Range.Cells(aux, 1).Value") = 1 Then
        Range.Cells(aux, 6).Text = mes1
        
    ElseIf Month("Range.Cells(aux, 1).Value") = 2 Then
        Range.Cells(aux, 6).Text = mes2
    
    ElseIf Month("Range.Cells(aux, 1).Value") = 3 Then
        Range.Cells(aux, 6).Text = mes3
        
    ElseIf Month("Range.Cells(aux, 1).Value") = 4 Then
        Range.Cells(aux, 6).Text = mes4
        
    ElseIf Month("Range.Cells(aux, 1).Value") = 5 Then
        Range.Cells(aux, 6).Text = mes5
        
    ElseIf Month("Range.Cells(aux, 1).Value") = 6 Then
        Range.Cells(aux, 6).Text = mes6
        
    ElseIf Month("Range.Cells(aux, 1).Value") = 7 Then
        Range.Cells(aux, 6).Text = mes7
        
    ElseIf Month("Range.Cells(aux, 1).Value") = 8 Then
        Range.Cells(aux, 6).Text = mes8
        
    ElseIf Month("Range.Cells(aux, 1).Value") = 9 Then
        Range.Cells(aux, 6).Text = mes9
        
    ElseIf Month("Range.Cells(aux, 1).Value") = 10 Then
        Range.Cells(aux, 6).Text = mes10
        
    ElseIf Month("Range.Cells(aux, 1).Value") = 11 Then
        Range.Cells(aux, 6).Text = mes11
    
    ElseIf Month("Range.Cells(aux, 1).Value") = 12 Then
        Range.Cells(aux, 6).Text = mes12
        
    Loop
    
End Sub
 
Postado : 17/09/2012 3:02 pm
(@pexis)
Posts: 112
Estimable Member
 

tem mta coisa errada ai

Sub verifica_mes()

    Dim UltLin As Integer
    Dim aux As Integer
    Dim mes1 As String, mes2 As String, mes3 As String, mes4 As String, mes5 As String, mes6 As String, mes7 As String, mes8 As String, mes9 As String, mes10 As String, mes11 As String, mes12 As String
    mes1 = "Janeiro"
    mes2 = "Fevereiro"
    mes3 = "Março"
    mes4 = "Abril"
    mes5 = "Maio"
    mes6 = "Junho"
    mes7 = "julho"
    mes8 = "Agosto"
    mes9 = "Setembro"
    mes10 = "Outubro"
    mes11 = "Novembro"
    mes12 = "Dezembro"
    
    UltLin = Sheets("CM - Sem Investidor").Range("a100000").End(xlUp).Row
    Sheets("CM - Sem Investidor").Cells(2, 2).Value = UltLin
    For aux = 2 To UltLin
    If Sheets("CM - Sem Investidor").Cells(aux, 1).Value = 1 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes1
        
    ElseIf Sheets("CM - Sem Investidor").Cells(aux, 1).Value = 2 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes2
    
    ElseIf Sheets("CM - Sem Investidor").Cells(aux, 1).Value = 3 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes3
        
    ElseIf Sheets("CM - Sem Investidor").Cells(aux, 1).Value = 4 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes4
        
    ElseIf Sheets("CM - Sem Investidor").Cells(aux, 1).Value = 5 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes5
        
    ElseIf Sheets("CM - Sem Investidor").Cells(aux, 1).Value = 6 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes6
        
    ElseIf Sheets("CM - Sem Investidor").Cells(aux, 1).Value = 7 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes7
        
    ElseIf Sheets("CM - Sem Investidor").Cells(aux, 1).Value = 8 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes8
        
    ElseIf Sheets("CM - Sem Investidor").Cells(aux, 1).Value = 9 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes9
        
    ElseIf Sheets("CM - Sem Investidor").Cells(aux, 1).Value = 10 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes10
        
    ElseIf Sheets("CM - Sem Investidor").Cells(aux, 1).Value = 11 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes11
    
    ElseIf Sheets("CM - Sem Investidor").Cells(aux, 1).Value = 12 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes12
        
    End If
    
    Next aux
    
End Sub

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 17/09/2012 4:23 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Talvez uma função...

Sub AleVBA_Mes()
   Dim rng As Range
   
   Set rng = Sheets("CM - Sem Investidor").Range("A2")
   
   'loop através da coluna A e colocar o nome do mês na coluna B
   Do Until rng = ""
   
      rng.Offset(0, 1).Value = MonthName(rng.Value)
      Set rng = rng.Offset(1, 0)
   Loop
   
   'tidy up
   Set rng = Nothing
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/09/2012 4:28 pm
(@pexis)
Posts: 112
Estimable Member
 

melhor usar case qdo sao varias condicoes
ultlin tava errado
nao se usa cells().text , é value
range.cells tb errado
seu loop nao tava incrementando o contador ( aux ) e mais algumas coisas
na declaracao pode fazer: dim mes1, mes2, mes3, mes4 as String

tinha tirado o month mas agora entendi.. ta ai d volta

Sub verifica_mes()

    Dim UltLin As Integer
    Dim aux As Integer
    Dim mes1 As String, mes2 As String, mes3 As String, mes4 As String, mes5 As String, mes6 As String, mes7 As String, mes8 As String, mes9 As String, mes10 As String, mes11 As String, mes12 As String
    mes1 = "Janeiro"
    mes2 = "Fevereiro"
    mes3 = "Março"
    mes4 = "Abril"
    mes5 = "Maio"
    mes6 = "Junho"
    mes7 = "julho"
    mes8 = "Agosto"
    mes9 = "Setembro"
    mes10 = "Outubro"
    mes11 = "Novembro"
    mes12 = "Dezembro"
    
    UltLin = Sheets("CM - Sem Investidor").Range("a100000").End(xlUp).Row
    Sheets("CM - Sem Investidor").Cells(2, 2).Value = UltLin
    For aux = 2 To UltLin
    If Month(Sheets("CM - Sem Investidor").Cells(aux, 1).Value) = 1 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes1
        
    ElseIf Month(Sheets("CM - Sem Investidor").Cells(aux, 1).Value) = 2 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes2
    
    ElseIf Month(Sheets("CM - Sem Investidor").Cells(aux, 1).Value) = 3 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes3
        
    ElseIf Month(Sheets("CM - Sem Investidor").Cells(aux, 1).Value) = 4 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes4
        
    ElseIf Month(Sheets("CM - Sem Investidor").Cells(aux, 1).Value) = 5 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes5
        
    ElseIf Month(Sheets("CM - Sem Investidor").Cells(aux, 1).Value) = 6 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes6
        
    ElseIf Month(Sheets("CM - Sem Investidor").Cells(aux, 1).Value) = 7 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes7
        
    ElseIf Month(Sheets("CM - Sem Investidor").Cells(aux, 1).Value) = 8 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes8
        
    ElseIf Month(Sheets("CM - Sem Investidor").Cells(aux, 1).Value) = 9 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes9
        
    ElseIf Month(Sheets("CM - Sem Investidor").Cells(aux, 1).Value) = 10 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes10
        
    ElseIf Month(Sheets("CM - Sem Investidor").Cells(aux, 1).Value) = 11 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes11
    
    ElseIf Month(Sheets("CM - Sem Investidor").Cells(aux, 1).Value) = 12 Then
        Sheets("CM - Sem Investidor").Cells(aux, 6).Value = mes12
        
    End If
    
    Next aux
    
End Sub

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 17/09/2012 4:32 pm
(@guilherme-a)
Posts: 7
Active Member
Topic starter
 

Pexis e alexandrevba, muito obrigado pela ajuda e desulpe pelos erros bobos. É que o único material que achei pra vba (gratuito) foi uma apostilinha com alguns exemplos e poucas explicações. Eu procurei o PDF do livro VBA and Macros for Microsoft Excel de Bill Jelen, mas não ahei nem em torrent =/.

Eu gostaria só de mais 2 expliações.
1°- pexis, porque você troucou

UltLin = Worksheets("CM - Sem Investidor").Cells(Worksheets("CM - Sem Investidor").Rows.Count, 1).End(xlUp).Row

por

UltLin = Sheets("CM - Sem Investidor").Range("a100000").End(xlUp).Row
    Sheets("CM - Sem Investidor").Cells(2, 2).Value = UltLin

?

2° alexandrevba o seu código não funcionou, ta dando "erro em tempo de execução 5: Argumento ou chamada de procedimento inválida", mas você poderia me passar um livro ou algum site com as funções para vba? porque eu não conheço nenhuma função praticamente.

Obrigado.

 
Postado : 18/09/2012 11:10 am
(@pexis)
Posts: 112
Estimable Member
 

sobre o ultlin tinha dado algum erro nessa linha, dai troquei, mas agora vendo melhor acho q funciona praticamente igual, devia ter algum erro de sintaxe só..
e sempre q for usar range, cell ou algo assim coloque a Sheets()/Worksheets() se achar mais facil pode declarar e colocar um atalho mais curto
tipo
dim ws as worksheet
set ws = thisworkbook.Sheets("Plan1")
depois só usar
ws.cells()
ws.range()

Resposta útil? Clique na mãozinha ao lado do botão Citar.

 
Postado : 18/09/2012 1:36 pm
(@guilherme-a)
Posts: 7
Active Member
Topic starter
 

Obrigado pela dica

 
Postado : 18/09/2012 1:47 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

2° alexandrevba o seu código não funcionou, ta dando "erro em tempo de execução 5: Argumento ou chamada de procedimento inválida", mas você poderia me passar um livro ou algum site com as funções para vba? porque eu não conheço nenhuma função praticamente.

Sua rotina deve chamar a função, é só uma ideia,que você poderia adaptar.

Segue uma boa planilha, talvez você já tenha visto!!
http://www.bertolo.pro.br/FinEst/Semana ... oExcel.pdf

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 18/09/2012 3:50 pm
(@guilherme-a)
Posts: 7
Active Member
Topic starter
 

Obrigado pela dica e pela apostila alexandrevba, vai ajudar demais mesmo

 
Postado : 19/09/2012 12:05 pm