locked
Modificação de macro em uma planilha de ações RRS feed

  • Discussão Geral

  • Estou com uma planilha de ações que preciso alterar uma macro para atender as minhas necessidades, mas não consigo resolver.

    A planilha possui uma macro que transfere linha para outro para outra aba

    Só que eu preciso que além de transferir, ela antes de fazer essa transferencia, subtraia a diferença~da linha e crie uma nova linha com essa diferença na mesma planilha.

    Resumindo: Ao invés de passar a linha inteira, a macro deveria subtrair a diferença e passar a linha subtraida enquanto a diferença cria uma linha em baixo.

     

    A macro já existente é essa:

    Sub Vendidas()
    Dim cancel As Boolean
    Resp = MsgBox("Deseja realmente Transferir Vendidas?", vbYesNo + vbCritical + vbDefaultButton2, Soft)
    If Resp = vbNo Then
      cancel = True
      Exit Sub
    End If
    Application.ScreenUpdating = False
    Dim i, w As Integer, XPlan As String
    Dim C1 As Integer, Ini As Integer, Fim As Integer
    C1 = 11
    Ini = 12
    Fim = 50
    XPlan = "Vendidas"
    For i = Ini To Fim
      If Cells(i, C1) = "Vendida" Then
        For w = Ini To 5000
          If Sheets(XPlan).Cells(w, 1) = "" Then
            Exit For
          End If
        Next
        Worksheets("Carteira").Range("A" & i & ":Z" & i).Copy Destination:=Worksheets(XPlan).Range("A" & w)
        Cells(i, 1) = "": Cells(i, 2) = ""
        Cells(i, 3) = "": Cells(i, 4) = "": Cells(i, 5) = ""
        Cells(i, 7) = "": Cells(i, 9) = ""
        Cells(i, 17) = "": Cells(i, 18) = ""
        Cells(i, 19) = "": Cells(i, 21) = ""
      End If
    Next
    Call OrdemPlan
    Application.ScreenUpdating = True
    End Sub

    Alguém sabe me ajudar?

     

    domingo, 12 de dezembro de 2010 11:04

Todas as Respostas

  • Fica difícil saber como sua macro funciona sem um exemplo.

    No entanto, sugiro que antes de você tornar vazio os valores de uma célula (logo após fazer a cópia da linha), você faça algo do tipo:

    Worksheets("Carteira").Range("A" & i) = Cells(i, 4) - Cells(i, 5)

    para alterar os valores da célula conforme desejado.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    domingo, 12 de dezembro de 2010 12:22