Macro para filtrar Valores

perguntadas 2013-09-20 20:46:23 +0100

imagem do gravatar de tjarodri

Caros, Estou desenvolvendo um projeto e preciso criar uma rotina de edição de dados. Neste caso a macro deve filtrar na base o número selecionado e colar na linha filtrada os novos valores. Em MsExcel esta macro roda normalmente porem não estou conseguindo encontrar uma forma de rodar em LibreOffice.

Obs: O filtro acontece de acordo com o valor que esta na range "W1"

Segue o código em MSEVBA

Application.DisplayAlerts = False Application.ScreenUpdating = False

If Worksheets("Home").Range("I29").Value = "" Then MsgBox "Obrigatório escolher Status do Atendimento", vbCritical, "Formulário Ativo - Amil"

Else If Worksheets("Home").Range("I29").Value > 0 Then

'Filtra a M.O Para colar.
Sheets("BASE PF").Select
Selection.End(xlUp).Select
Selection.End(xlToLeft).Select
Selection.End(xlUp).Select
Selection.End(xlUp).Select
Selection.End(xlToLeft).Select
ActiveSheet.Range("$A$1:$U$1045").AutoFilter Field:=2, Criteria1:=Range("=W1"), _
    Operator:=xlAnd

'Copiar dados para colar na base.
Sheets("Home").Select
ActiveSheet.Unprotect Password:=5609
Range("V45:AD45").Select
Selection.Copy
Sheets("BASE PF").Select
Range("N1").Select
Selection.End(xlDown).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False
ActiveSheet.ShowAllData

ActiveSheet.Range("$A$1:$U$1045").AutoFilter Field:=14, Criteria1:= _
    "Contato Realizado"
    Range("$A$2:$V$1045").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("BaseII").Select
Range("A1").Select
Selection.End(xlDown).Select
Range("A2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Sheets("BASE PF").Select
Application.CutCopyMode = False
Selection.EntireRow.Delete
Selection.End(xlUp).Select
ActiveSheet.ShowAllData
'Limpar linhas Preenchidas da Cadastro.

Sheets("Home").Select

Worksheets("Home").Range("I29").Value = "" Worksheets("Home").Range("I31").Value = "" Worksheets("Home").Range("M31").Value = "" Worksheets("Home").Range("N36").Value = "" Worksheets("Home").Range("N38").Value = "" Worksheets("Home").Range("M29").Value = "" Worksheets("Home").Range("N34").Value = ""

'Escolher novo MO.

 Range("V15").Select
ActiveCell.FormulaR1C1 = "=RANDBETWEEN('BASE PF'!R2C1,'BASE PF'!R968C1)"
Range("V15").Select
Selection.Copy
Range("V12").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Application.CutCopyMode = False

'Protege a planilha. ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:=5609 Range("I29").Select MsgBox "Dados cadastrado com Sucesso.", vbInformation, "Formulário Ativo - Amil"

End If End If End Sub

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

Comentários

imagem do gravatar de GrafenoGrafeno ( 2013-09-20 22:49:44 +0100 )editar

Sem querer te desanimar, mas isso ai em basic... alias, qualquer coisa em basic é complicado. no VBA até aprendemos de forma autodidata, mas no basic.... faça um teste, grave a macro copiando uma célular e colando em outra, depois olhe o código que foi gerado. Mas por exeperiência sei que alguns macros do excel rodam no calc, mas..... saber o que roda e o que não roda e porque...

imagem do gravatar de espesp ( 2015-09-23 22:10:28 +0100 )editar

Olá tjarodri, pelo que eu entendi você tem um banco de dados e quer filtrar no próprio banco e depois copiar os dados filtrados e colar em outro local. É isso?

imagem do gravatar de Júnio VieiraJúnio Vieira ( 2017-10-20 12:40:16 +0100 )editar