Saberexcel - o site das macros
Essas macros e procedimentos do Aplicativo Microsoft Excel VBA(Visual Basic Application), deletam colunas ou linhas [PARES], observem também que inserí um menu personalizado para facilitar o teste do aluno desenvolvedor, se inserissemos algum botão na folha de planilha para o teste
certamente iria deletá-lo com os testes, então fiz o menu personalizado faça os testes através do menu personalizado, baixe o exemplo em um link no final da desta página
Sub Deletar_colunas_Pares()
'Determinar a última linha que contém valores
R = Cells.SpecialCells(xlCellTypeLastCell).Column
'Se a última coluna for ímpar, acrescentar 1 ao seu valor
If R Mod 2 <> 0 Then R = R + 1
'Realizar o loop decrescente de R até o valor 2 com incremento -2
For i = R To 2 Step -2
'Deletar a Coluna
Columns(i).Delete
Next i
End Sub
'Esta macro separa ímpares de pares somente por coluna. Teria como ela remover linha por linha ?
Sub Deletar_Linhas_Pares()
'Determinar a última linha que contém valores
R = Cells.SpecialCells(xlCellTypeLastCell).Row
'Se a última linha for ímpar, acrescentar 1 ao seu valor
If R Mod 2 <> 0 Then R = R + 1
'Realizar o loop decrescente de R até o valor 2 com incremento -2
For i = R To 2 Step -2
'Deletar a linha
Rows(i).Delete
Next i
End Sub
'inserindo um pequeno contador que insere autonumeracão números de 1 a 10
'intenção didática, de como inserir uma autonumeração.
Sub numerando_colunas()
[A1:A10].ClearContents
Range("A1").Select
For i = 1 To 10
ActiveCell.Offset(0, -1 + i ).Value = i
Next
End Sub
'Observe que mudamos a posição da variável "i" para posição row(linha) para autonumeração
'observe que a propriedade OffSet(linha, coluna) - descola linha e colunas.
Sub numerando_linhas()
[A1:L1].ClearContents
Dim s As String
Range("A1").Select
For i = 1 To 10
ActiveCell.Offset(-1 + i, 0).Value = i
Next i
End Sub
Sub dados()
Range("G14").Value = "Acesse o menu personalizado, para realizar os testes"
Range("G15").Value = "Fiz uma macro para montar um menu personalizado, "
Range("G16").Value = "pois irá deletar linhas e colunas."
Range("G17").Value = "com isso deletará dados na planilha"
Range("G13").Select
End Sub
EM OUTRO MÓDULO DE PROGRAMAÇÃO VOCE PODERÁ INSERIR OS PROCEDIMENTOS PARA O MENU PERSONALIZADO
Public Const CMDBARNOME = "LISTA MENU E CMDBAR"
Sub menu()
Dim cmdBar As CommandBar
Dim menu As CommandBarPopup
Dim btn As CommandBarButton
Call menuDel
Set cmdBar = CommandBars.Add(Name:=CMDBARNOME, Position:=msoBarFloating)
cmdBar.Width = 180
'.......'
Set menu = cmdBar.Controls.Add(Type:=msoControlPopup)
With menu
.Caption = "Deletando Linhas e Colunas"
.Width = 90
End With
'.......'
Set btn = menu.Controls.Add(Type:=msoControlButton)
With btn
.Caption = "Deletar Coluna Pares"
.OnAction = "Deletar_colunas_Pares"
End With
'.......'
Set btn = menu.Controls.Add(Type:=msoControlButton)
With btn
.Caption = "Deletar Colunas Pares"
.OnAction = "Deletar_Linhas_Pares"
End With
'.......'
Set menu = cmdBar.Controls.Add(Type:=msoControlPopup)
With menu
.Caption = "Numeros linhas e colunas"
.Width = 90
End With
'.......'
Set btn = menu.Controls.Add(Type:=msoControlButton)
With btn
.Caption = "Numerando Colunas"
.OnAction = "numerando_colunas"
.FaceId = 654
End With
'.......'
Set btn = menu.Controls.Add(Type:=msoControlButton)
With btn
.Caption = "Numerando Linhas"
.BeginGroup = True
.OnAction = "numerando_linhas"
.FaceId = 1044
End With
'.......'
With cmdBar
.Visible = True
.Protection = msoBarNoChangeDock + msoBarNoCustomize + msoBarNoResize
End With
End Sub
Sub menuDel()
On Error Resume Next
CommandBars(CMDBARNOME).Delete
End Sub
NO MODULO DE PROGRAMAÇÃO VBE DO WORKBOOK INSIRA OS SEGUINTES PROCEDIMENTOS
Private Sub Workbook_Open()
'Expedito Marcondes
'Site.....: http://www.saberexcel.com
'Email...: [email protected]
Call mnu
End Sub
'...........................'
Private Sub Workbook_BeforeClose(Cancel As Boolean)
menuDel
ThisWorkbook.Save
End Sub
Aprenda tudo sobre o Aplicativo Microsoft Excel VBA com Saberexcel
Baixe o exemplo de planilha contendo macros e procedimentos acima
vba deleta linhas ou colunas pares usando menu personalizado (23.02 kB 2010-11-23 07:46:44)