Cinco dicas que foram muito úteis para mim:
1) Quando não sei fazer algo no VBA, vou ao menu EXIBIÇÃO >> MACROS >> GRAVAR MACRO
Faço o que eu quero aí volto ao menu EXIBIÇÃO >> MACROS >> PARAR GRAVAÇÃO
Aperto Alt + F11 e vejo como a macro fez aquilo. Tento entender e tento adaptar.
2) Quando vou criar um código e o resultado não está saindo como o esperado, entro no código e vou apertando F8 para executar passo a passo, aí vou passando o mouse sobre as variáveis para verificar se o valores delas estão corretos, já consertei milhares de códigos dessa forma.
3) Antes de executar o código, vou ao menu Depurar >> Compilar. Isso ajuda corrigir erros mais simples, como o nome de uma variável digitado errado.
4) Declaro todas as variáveis. Isso também evita erros.
5) Sempre uso o Option Explicit lá no início. Ele me obriga a declarar as variáveis.
Option Explicit
Sub TRANSFERIR()
Dim LINHA As Long
Dim LINHA2 As Long
For LINHA = 3 To Plan1.UsedRange.Rows.Count
If UCase(Plan1.Range("F" & LINHA).Value) = "S" Then
LINHA2 = 3
While Sheets(Plan1.Range("B" & LINHA).Value).Range("B" & LINHA2).Value <> ""
LINHA2 = LINHA2 + 1
Wend
Sheets(Plan1.Range("B" & LINHA).Value).Range("B" & LINHA2).Value = Plan1.Range("B" & LINHA).Value
Sheets(Plan1.Range("B" & LINHA).Value).Range("C" & LINHA2).Value = Plan1.Range("C" & LINHA).Value
Sheets(Plan1.Range("B" & LINHA).Value).Range("D" & LINHA2).Value = Plan1.Range("D" & LINHA).Value
Sheets(Plan1.Range("B" & LINHA).Value).Range("E" & LINHA2).Value = Plan1.Range("E" & LINHA).Value
Sheets(Plan1.Range("B" & LINHA).Value).Range("F" & LINHA2).Value = Plan1.Range("F" & LINHA).Value
Sheets(Plan1.Range("B" & LINHA).Value).Range("G" & LINHA2).Value = Plan1.Range("G" & LINHA).Value
Sheets(Plan1.Range("B" & LINHA).Value).Range("H" & LINHA2).Value = Plan1.Range("H" & LINHA).Value
Sheets(Plan1.Range("B" & LINHA).Value).Range("I" & LINHA2).Value = Plan1.Range("I" & LINHA).Value
Plan1.Range("B" & LINHA).EntireRow.Delete
Sheets(Plan1.Range("B" & LINHA).Value).Range("A" & LINHA2 & ":I" & LINHA2).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
Range("A" & LINHA2).Select
End If
Next LINHA
End Sub
Postado : 12/04/2018 3:25 am