Notifications
Clear all

VBA copiar+colar (for+next) só aceita vazio

3 Posts
2 Usuários
0 Reactions
610 Visualizações
(@gtsalikis)
Posts: 2373
Noble Member
Topic starter
 

Olá, amigos, estou com um problema em um código VBA. Sou iniciante e estou apanhando um bocado. O detalhe é que esse código estava funcionando, mas agora...

O que acontece, na parte em que o código pega os valores da coluna AB e passa para a coluna R, e pega os valores da coluna T e passa para a U, só funciona se a coluna R estiver vazia. Mas antes não era assim, ele funcionava independende disso, sobrescrevendo os valores da coluna R, que é o que eu preciso.

Seguem o código e a planilha:

Sub Sincronizar()

   Range("R2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
   Range("BA2:BA88").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
   
   Dim editor As Integer, x As Single, y As Single, a As Single, b As Single
    For editor = Abs(Range("AF10")) To Abs(Range("AF14"))
        x = Cells(editor, Abs(Range("AE4")))
            Cells(editor, Abs(Range("AF4"))) = x
        a = Cells(editor, Abs(Range("AE6")))
            Cells(editor, Abs(Range("AF6"))) = a
    Next editor
    
   Dim giro As Integer, n As Single, ini1 As Integer, ini2 As Integer
    n = Abs(Range("AE14"))
    ini1 = Abs(Range("AF10"))
    ini2 = Abs(Range("AI8"))
     If n = 0 Then Exit Sub
     If ini1 = ini2 Then Exit Sub
     If n > 0 Then
      For giro = 1 To n
         For editor = Abs(Range("AF10")) To Abs(Range("AF14"))
             x = Cells(editor, Abs(Range("AE4")))
                 Cells(editor, Abs(Range("AF4"))) = x
             a = Cells(editor, Abs(Range("AE6")))
                 Cells(editor, Abs(Range("AF6"))) = a
         Next editor
      Next giro
     End If
        
End Sub

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 14/05/2013 6:58 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não entendi, e fiqueiconfuso
No topico voce diz

na parte em que o código pega os valores da coluna AB e passa para a coluna R,

Porem o codigo (pelo menos o que postou) Copia da Coluna R para a coluna AB (o inverso do descrito)

Qdo diz

os valores da coluna T e passa para a U

entendo que seja onde aparece a variavel editor; porem essa variavel pega a linha 1000 (Valor de AF10) coluna 28 (Valore de AE4) ou seja AB1000, one não há valor algum??
O que é realmente para executar??

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

 
Postado : 14/05/2013 7:40 am
(@gtsalikis)
Posts: 2373
Noble Member
Topic starter
 

Não entendi, e fiqueiconfuso
No topico voce diz

na parte em que o código pega os valores da coluna AB e passa para a coluna R,

Porem o codigo (pelo menos o que postou) Copia da Coluna R para a coluna AB (o inverso do descrito)

Desculpe, Reinaldo, não me expressei bem.

Na primeira parte

 Range("R2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
   Range("BA2:BA88").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Copia de R para BA

Na segunda parte,

Dim editor As Integer, x As Single, y As Single, a As Single, b As Single
    For editor = Abs(Range("AF10")) To Abs(Range("AF14"))
        x = Cells(editor, Abs(Range("AE4")))
            Cells(editor, Abs(Range("AF4"))) = x

Copia de BA para R (achei estranho vc dizer que faz o oposto, pois eu rodo a macro e ela faz como eu digo aqui. Aliás, é nessa parte que está complicado. Se os campos em R estiverem vazios, ela executa, se estiverem preenchidos, ela não executa. Aqui eu preciso de ajuda.

Qdo diz

os valores da coluna T e passa para a U

entendo que seja onde aparece a variavel editor; porem essa variavel pega a linha 1000 (Valor de AF10) coluna 28 (Valore de AE4) ou seja AB1000, one não há valor algum??
O que é realmente para executar??

Na verdade, esse valor de 1000 em AF10 é um valor que eu coloquei só pra fazer a macro parar quando preciso, essa célula tem uma função que altera o valor conforme ela vai calculando (sei que deve ter uma forma melhor, mas como ainda estou engatinhando em VBA, já foi suado chegar até aqui). Não acho que tenha algum problema nessa parte, ao menos, eu vi que ela para antes disso.

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 14/05/2013 10:42 am