Como excluir uma coluna do Excel

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Como excluir uma coluna do Excel

Mensagem por Adson »

Boa tarde,

Alguém tem um exemplo de como excluir uma (ou várias) colunas no Excel?

Eu estou usando dessa forma:

Código: Selecionar todos

    // Exclui colunas desnecessárias conforme o modelo escolhido pelo usuário
    If vTpRelat     = 2  && Detalhado por Fabricante
      oSheet:Columns(03):Delete()  && Ao invés de excluir as colunas 3 e 4, está excluindo
      oSheet:Columns(04):Delete()  && as colunas 3 e 5
    ElseIf vTpRelat = 3  && Detalhado por Seção
      oSheet:Columns(05):Delete()
      oSheet:Columns(06):Delete()
    ElseIf vTpRelat = 4  && Resumido por Fabricante
      oSheet:Columns(01):Delete()
      oSheet:Columns(02):Delete()
      oSheet:Columns(05):Delete()
      oSheet:Columns(06):Delete()
    ElseIf vTpRelat = 5  && Detalhado por Seção
      oSheet:Columns(01):Delete()
      oSheet:Columns(02):Delete()
      oSheet:Columns(03):Delete()
      oSheet:Columns(04):Delete()
    EndIf
O que pode estar errado? Já pesquisei na documentação da Microsoft, mas não encontrei nada que apontasse o erro.

Obs: A planilha é gerada por uma rotina genérica, mas que ao final, eu excluo algumas colunas que não interessam ao usuário conforme o modelo que ele escolheu.

xHarbour 1.2.3 / HWGui
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Como excluir uma coluna do Excel

Mensagem por Vlademiro »

Olá,

Sempre que eu tinha dúvidas no Excel eu criava uma macro e depois ia olhar o que ele gerou... Vc fez isso ?
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Como excluir uma coluna do Excel

Mensagem por Toledo »

Adson escreveu:O que pode estar errado? Já pesquisei na documentação da Microsoft, mas não encontrei nada que apontasse o erro.
Eu acho que quando você exclui a coluna 3, então a coluna 4 fica sendo a coluna 3 e a coluna 5 fica sendo a coluna 4. Então faz um teste excluindo duas vezes a coluna 3.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Como excluir uma coluna do Excel

Mensagem por Adson »

É exatamente isso !!!!

A solução é bastante simples:

Código: Selecionar todos

    // Exclui colunas desnecessárias conforme o modelo escolhido pelo usuário
    If vTpRelat     = 2  && Detalhado por Fabricante
      oSheet:Range("C:D"):Delete()
    ElseIf vTpRelat = 3  && Detalhado por Seção
      oSheet:Range("E:F"):Delete()
    ElseIf vTpRelat = 4  && Resumido por Fabricante
      oSheet:Range("A:B,E:F"):Delete()
    ElseIf vTpRelat = 5  && Resumido por Seção
      oSheet:Range("A:D"):Delete()
    EndIf

Obrigado.
Avatar do usuário
Adson
Usuário Nível 1
Usuário Nível 1
Mensagens: 33
Registrado em: 05 Mar 2019 10:36
Localização: GOIANIA/GO

Como excluir uma coluna do Excel

Mensagem por Adson »

Vlademiro escreveu:Olá,

Sempre que eu tinha dúvidas no Excel eu criava uma macro e depois ia olhar o que ele gerou... Vc fez isso ?
Sua dica de gravar uma macro no excel, de fato é muito boa. Obrigado.

Código: Selecionar todos

Sub Exclui_Coluna()
'
' Exclui_Coluna Macro
'

'
    Range("A:B,D:F").Select
    Range("H2").Activate
    Selection.Delete Shift:=xlToLeft
End Sub
Eu só não consegui usar mais de uma sequência de colunas com o método Range(), dessa forma Range("A:B,D:F") , deu erro na execução. Nesse caso, eu precisei executar o Range() para cada sequência de colunas a excluir, pois, parece que o Range() não trabalha com mais de um parâmetro.

Código: Selecionar todos

    If vTpRelat     = 2  && Detalhado por Fabricante
      oSheet:Range("C:D"):Delete()
    ElseIf vTpRelat = 3  && Detalhado por Seção
      oSheet:Range("E:F"):Delete()
    ElseIf vTpRelat = 4  && Resumido por Fabricante
      oSheet:Range("A:B"):Delete()   && Seguindo o conselho do Toledo pois após excluir uma coluna,
      oSheet:Range("C:D"):Delete()   && o Excel faz uma reclassificação das colunas 
    ElseIf vTpRelat = 5  && Resumido por Seção
      oSheet:Range("A:D"):Delete()
    EndIf
Responder