Ir para conteúdo
Fórum Script Brasil
  • 0

Como gerar relatório com cabeçalho em VBA?


Stefan Rosa

Pergunta

Olá à todos,

Tenho uma planilha com 3 colunas A, B e C. Na coluna B uso para data de registro, aonde criei um Userform com dois calendários para filtrar as datas que quero filtrar para o meu relatório. Neste Userform criei um botão visualizar relatório. Aonde eu quero puxar para uma planilha paralela o filtro utilizado para o relatório.

Criei um código, conforme abaixo, aonde el transfere os dados e parametros de medida para tal planilha, mas não estou conseguindo identificar o cabeçalho e o filtro que preciso.

Sub CommandButton1_Click()
Dim Matriz(3, 50000)
Dim Dataf1 As String
Dim Dataf2 As String

ArqAtual = ActiveWorkbook.Name

data1 = Calendar3.Value
Data2 = Calendar2.Value

Range("b2").Select
i = 0
k = 1
Do While Not IsEmpty(ActiveCell.Offset(i, 0))
If ActiveCell.Offset(i, 0).Value >= data1 And ActiveCell.Offset(i, 0).Value <= Data2 Then
Matriz(1, k) = ActiveCell.Offset(i, -1)
Matriz(2, k) = ActiveCell.Offset(i, 0)
Matriz(3, k) = ActiveCell.Offset(i, 1)
k = k + 1
i = i + 1
Else
i = i + 1
End If
Loop

contfinal = i + 1
 Range("A1:C1").Select
    Selection.Copy
    Sheets("Ocorrencia").Select
    Sheets.Add
    Range("A1").Select
    ActiveSheet.Paste
Range("A2").Select
    Columns("A:A").ColumnWidth = 9
    Columns("B:B").ColumnWidth = 10
    Columns("C:C").ColumnWidth = 124
Columns("B:B").Select

    
    ArqRelat = ActiveWorkbook.Name
    Windows("" & ArqAtual & "").Activate
    Range("A1:C1").Select
    Selection.Copy
    Windows("" & ArqRelat & "").Activate
    Range("A1").Select
    ActiveSheet.Paste
    Windows("" & ArqAtual & "").Activate
    Columns("A:C").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("" & ArqRelat & "").Activate
    Columns("A:C").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("a1").Select

i = 0
k = 1
For k = 1 To contfinal
ActiveCell.Offset(i, 0).Value = Matriz(1, k)
ActiveCell.Offset(i, 1).Value = Matriz(2, k)
ActiveCell.Offset(i, 2).Value = Matriz(3, k)
i = i + 1
Next k

UserForm2.Hide


End Sub

Agradeço à todos desde já pela atenção!

Sds,

Stefan Rosa

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Pelo que pude entender você quer filtrar uma tabela que possui três colunas. O filtro seria feito pela coluna de datas, com um intervalo de data inicial e data final, correto?

Em vez filtrar e carregar os dados da tabela para uma matriz não seria mais fácil fazer a filtragem usando o filtro avançado do Excel?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...