Notifications
Clear all

[Resolvido] Erro ao Depurar

7 Posts
3 Usuários
1 Reactions
1,360 Visualizações
(@brunonascimento)
Posts: 5
Active Member
Topic starter
 

Caros, boa noite.

Preciso de ajuda com o código abaixo, podem me ajudar a corrigir?

 

Sub Salvar()
Dim i As Byte

With ThisWorkbook.Worksheets("Rawdata")
RowCount = .Cells(.Rows.Count, "A").End(xlUp).Row
Range("Rawdata!A2" & RowCount + 1).Value = Range("Monitoria!D4").Value
Range("Rawdata!B3" & RowCount + 1).Value = Range("Monitoria!D6").Value
Range("Rawdata!C3" & RowCount + 1).Value = Range("Monitoria!L4").Value
Range("Rawdata!D3" & RowCount + 1).Value = Range("Monitoria!K9").Value
Range("Rawdata!E3" & RowCount + 1).Value = Range("Monitoria!K10").Value
Range("Rawdata!F3" & RowCount + 1).Value = Range("Monitoria!K11").Value
Range("Rawdata!G3" & RowCount + 1).Value = Range("Monitoria!K12").Value
Range("Rawdata!H3" & RowCount + 1).Value = Range("Monitoria!K15").Value
Range("Rawdata!I3" & RowCount + 1).Value = Range("Monitoria!K16").Value
Range("Rawdata!J3" & RowCount + 1).Value = Range("Monitoria!K17").Value
Range("Rawdata!K3" & RowCount + 1).Value = Range("Monitoria!K18").Value
Range("Rawdata!L3" & RowCount + 1).Value = Range("Monitoria!K21").Value
Range("Rawdata!M3" & RowCount + 1).Value = Range("Monitoria!K22").Value
Range("Rawdata!N3" & RowCount + 1).Value = Range("Monitoria!K23").Value
Range("Rawdata!O3" & RowCount + 1).Value = Range("Monitoria!K24").Value
Range("Rawdata!P3" & RowCount + 1).Value = Range("Monitoria!K25").Value
Range("Rawdata!Q3" & RowCount + 1).Value = Range("Monitoria!K26").Value
Range("Rawdata!R3" & RowCount + 1).Value = Range("Monitoria!K29").Value
Range("Rawdata!S3" & RowCount + 1).Value = Range("Monitoria!K30").Value
Range("Rawdata!T3" & RowCount + 1).Value = Range("Monitoria!K31").Value
Range("Rawdata!U3" & RowCount + 1).Value = Range("Monitoria!K32").Value
Range("Rawdata!V3" & RowCount + 1).Value = Range("Monitoria!K33").Value
Range("Rawdata!W3" & RowCount + 1).Value = Range("Monitoria!K34").Value
For i = 4 To 17
.Range(RowCount + 1, i).Value = Worksheets("Monitoria").Range(i + 5, 11).Value
Next i

For i = 18 To 23
.Range(RowCount + 1, i).Value = Worksheets("Monitoria").Range(i + 11, 11).Value
Next i
End With
End Sub

Editado pela Moderação. Motivo: Procure utilizar o botão Código (< >) sempre que for inserir código VBA ou Fórmulas

 
Postado : 06/09/2020 12:02 am
(@srobles)
Posts: 231
Estimable Member
 

@brunonascimento

 

Acredito que as referências á Range's estão erradas. Experimente alterar sua macro para o que segue:

Sub Salvar()
Dim i As Long

With ThisWorkbook.Worksheets("Rawdata")
RowCount = .Cells(.Rows.Count, "A").End(xlUp).Row
Range("A" & RowCount + 1).Value = Range("Monitoria!D4").Value
Range("B" & RowCount + 1).Value = Range("Monitoria!D6").Value
Range("C" & RowCount + 1).Value = Range("Monitoria!L4").Value
Range("D" & RowCount + 1).Value = Range("Monitoria!K9").Value
Range("E" & RowCount + 1).Value = Range("Monitoria!K10").Value
Range("F" & RowCount + 1).Value = Range("Monitoria!K11").Value
Range("G" & RowCount + 1).Value = Range("Monitoria!K12").Value
Range("H" & RowCount + 1).Value = Range("Monitoria!K15").Value
Range("I" & RowCount + 1).Value = Range("Monitoria!K16").Value
Range("J" & RowCount + 1).Value = Range("Monitoria!K17").Value
Range("K" & RowCount + 1).Value = Range("Monitoria!K18").Value
Range("L" & RowCount + 1).Value = Range("Monitoria!K21").Value
Range("M" & RowCount + 1).Value = Range("Monitoria!K22").Value
Range("N" & RowCount + 1).Value = Range("Monitoria!K23").Value
Range("O" & RowCount + 1).Value = Range("Monitoria!K24").Value
Range("P" & RowCount + 1).Value = Range("Monitoria!K25").Value
Range("Q" & RowCount + 1).Value = Range("Monitoria!K26").Value
Range("R" & RowCount + 1).Value = Range("Monitoria!K29").Value
Range("S" & RowCount + 1).Value = Range("Monitoria!K30").Value
Range("T" & RowCount + 1).Value = Range("Monitoria!K31").Value
Range("U" & RowCount + 1).Value = Range("Monitoria!K32").Value
Range("V" & RowCount + 1).Value = Range("Monitoria!K33").Value
Range("W" & RowCount + 1).Value = Range("Monitoria!K34").Value


For i = 4 To 17
.Cells(RowCount + 1, i).Value = Worksheets("Monitoria").Cells(i + 5, 11).Value
Next i

For i = 18 To 23
.Cells(RowCount + 1, i).Value = Worksheets("Monitoria").Cells(i + 11, 11).Value
Next i
End With
End Sub

Acredito que alterando o tipo da variável i de Byte para Integer ou Long, seu problema possa ser resolvido.

Confesso que fiquei confuso com os laços For => Next ao final da macro, pois a variável i hora faz referência á linhas e em outra hora, faz referênacias á colunas.

Experimente e retorne, ok?

 

Espero ter ajudado.

Abs.

Saulo Robles

 
Postado : 06/09/2020 1:26 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Bem vindo ao fórum Planilhando, @brunonascimento!

No título de seu tópico vc cita um "erro ao depurar". Qual seria esse erro que está aparecendo?

Postado por: @srobles

Acredito que as referências á Range's estão erradas.

Concordo com o amigo @srobles, aquele número 3 (2) junto com a letra da coluna tá bem estranho.

Postado por: @srobles

Confesso que fiquei confuso com os laços For => Next...

Além do que o Saulo citou com relação às linhas versus colunas, achei estranho que os 2 laços For/Next matam uma boa parte das modificações que foram feitas no início do código, pois os intervalos se justapõe.

Acho que vc precisa revisar de onde partem e onde quer colocar as informações de cada planilha. Melhor seria anexar um modelo Excel aqui para facilitar o trabalho de quem quer lhe ajudar.

 
Postado : 07/09/2020 10:49 pm
(@brunonascimento)
Posts: 5
Active Member
Topic starter
 

@edsonbr

deu certo até um ponto, não está gravando mais

 

editei alguns campos e ficou assim

 

Sub Salvar()
Dim i As Long

With ThisWorkbook.Worksheets("Rawdata")
RowCount = .Cells(.Rows.Count, "A").End(xlUp).Row
Range("A" & RowCount + 1).Value = Range("Monitoria!D2").Value
Range("B" & RowCount + 1).Value = Range("Monitoria!D6").Value
Range("C" & RowCount + 1).Value = Range("Monitoria!L4").Value
Range("D" & RowCount + 1).Value = Range("Monitoria!K9").Value
Range("E" & RowCount + 1).Value = Range("Monitoria!K10").Value
Range("F" & RowCount + 1).Value = Range("Monitoria!K11").Value
Range("G" & RowCount + 1).Value = Range("Monitoria!K12").Value
Range("H" & RowCount + 1).Value = Range("Monitoria!K15").Value
Range("I" & RowCount + 1).Value = Range("Monitoria!K16").Value
Range("J" & RowCount + 1).Value = Range("Monitoria!K17").Value
Range("K" & RowCount + 1).Value = Range("Monitoria!K18").Value
Range("L" & RowCount + 1).Value = Range("Monitoria!K21").Value
Range("M" & RowCount + 1).Value = Range("Monitoria!K22").Value
Range("N" & RowCount + 1).Value = Range("Monitoria!K23").Value
Range("O" & RowCount + 1).Value = Range("Monitoria!K24").Value
Range("P" & RowCount + 1).Value = Range("Monitoria!K25").Value
Range("Q" & RowCount + 1).Value = Range("Monitoria!K26").Value
Range("R" & RowCount + 1).Value = Range("Monitoria!K29").Value
Range("S" & RowCount + 1).Value = Range("Monitoria!K30").Value
Range("T" & RowCount + 1).Value = Range("Monitoria!K31").Value
Range("U" & RowCount + 1).Value = Range("Monitoria!K32").Value
Range("V" & RowCount + 1).Value = Range("Monitoria!K33").Value
Range("W" & RowCount + 1).Value = Range("Monitoria!K34").Value

For i = 4 To 17
.Cells(RowCount + 1, i).Value = Worksheets("Monitoria").Cells(i + 5, 11).Value
Next i

For i = 18 To 23
.Cells(RowCount + 1, i).Value = Worksheets("Monitoria").Cells(i + 11, 11).Value
Next i
End With
End Sub

Editado pela Moderação. Motivo: Procure utilizar o botão Código (< >) sempre que for inserir código VBA ou Fórmulas.

 
Postado : 08/09/2020 10:29 am
(@brunonascimento)
Posts: 5
Active Member
Topic starter
 

Segue a planilha que to fazendo o teste

 
Postado : 08/09/2020 11:08 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa tarde, @brunonascimento

Teste o seguinte código. Obs.: se for usar o mesmo modelo que vc anexou, limpe antes o lixo deixado pelas execuções anteriores lá nas linhas 224, 225 e 323.

Sub Salvar()
  Dim rgMonit As Range, i As Byte, RowCount As Long
  Set rgMonit = Worksheets("Monitoria").Range("D4,D6,L4,K9,K10,K11,K12,K15,K16,K17,K18," & _
                                              "K21,K22,K23,K24,K25,K26,K29,K30,K31,K32,K33,K34")
  RowCount = Worksheets("Rawdata").Cells(Rows.Count, "A").End(xlUp).Row
  For i = 1 To 23
    Worksheets("Rawdata").Cells(RowCount + 1, i).Value = rgMonit.Areas(i).Cells(1).Value
  Next i
End Sub

 
Postado : 08/09/2020 2:34 pm
(@brunonascimento)
Posts: 5
Active Member
Topic starter
 

@edsonbr

 

deu certo, MUUUUUUUUUUITO obrigado amigo!

 
Postado : 08/09/2020 5:21 pm