linguagem de script do Microsoft Excel, Visual Basic for Applications, tem muitas ferramentas para estender as funcionalidades padrão do Excel. Uma dessas ferramentas é a capacidade de adicionar controles ( como caixas de verificação e botões) diretamente em planilhas. Usando controles do Visual Basic e sua capacidade de tocar em funções essenciais do Excel faz para um tutorial eficaz na melhoria do Excel através do Visual Basic for Applications. Projeto: O uso do Visual Basic para Subtotais Calcule
realizar um projeto de computação subtotais para as colunas de uma tabela planilha. Comece abrindo o Excel e criar uma tabela em qualquer lugar na planilha. A tabela inicialmente se parece com a tabela na Figura 1 .
Selecione a tabela, incluindo os cabeçalhos de coluna, e criar o nome " mytab " para esta tabela . Criar o nome digitando-o na caixa de nome do Excel , que é em direção ao canto superior esquerdo da área de trabalho do Excel.
Adicionar controles do Visual Basic
Adicione caixas de seleção para a mesa , com cada caixa sentado acima de uma coluna da tabela. Você pode encontrar as caixas sob Desenvolvedor > Inserir> Controles de formulário . Além disso, adicionar dois botões para a planilha. Arraste e solte -os da mesma área que as caixas de seleção, à esquerda e à direita da tabela de mytab . Botão direito do mouse com o botão esquerdo e alterar o seu texto para ler "Não Subtotais ". Alterar o texto do botão direito para "Remover Subtotais . "
Posicione os botões e caixas de seleção para que o seu quadro se parece com a tabela na Figura 2 .
Escrever o código
Agora que você já projetou a tabela e seus controles, você vai escrever o código que faz os subtotais na mesa. Digite o IDE do Visual Basic ( ambiente de desenvolvimento integrado ) e adicionar um módulo. Clique em Inserir> Módulo . Na janela de código do novo módulo , digite o código do programa :
Option Explicit
Public Sub doSubtotal ()
Dim s Como StringDim r Como RangeDim c Como ObjectDim ar () As IntegerDim Ifield Como IntegerDim varItemsDim nChkd as Integer
ReDim ar (0 a 0)
' remover subtotalsRemoveSubtotals anteriores
' criar a matriz de campos de índices ( a partir de 1) o subtotal
Ifield = 1nChkd = 0
'
loop através caixas de seleção. Se estiver marcada, adicionar o seu campo para arrayFor Cada c Em ActiveSheet.CheckBoxes
Se ( c.Value = 1) = ThennChkd nChkd + 1 ' adicionar esse campo para array
ar ( UBound (ar) ) = iFieldReDim Preserve ar ( 0 To UBound (ar) + 1) ' adicionar elemento para o próximo campo selecionado
End If
Ifield = Ifield + 1
Próxima
Se ( nChkd = 0) ThenMsgBox ( " Por favor, verifique pelo menos uma caixa . " ) Exit SubEnd Se
ReDim Preserve ar ( 0 To UBound (ar) - 1) 'Remover vazio últimos elementvarItems = ar
'Faça subtotal real . Primeiro, encontre o intervalo para fazer subtotal em
Defina r = Application.Names ( " mytab " ) RefersToRange ' recuperar o intervalo nomeado para subtotal
r.Subtotal GroupBy : . = 1, Função : = xlSum , TotalList : = varItems , SummaryBelowData : = xlSummaryBelow
End Sub
Sub RemoveSubtotals Públicas ()
'Verificar subtotal anterior, usando o armazenamento fornecido pelo comentário campo no Namespace mytab ( ver Fórmulas> gerente Name) ' Nós armazenamos originais primeira coluna da tabela, . Se a coluna de partida da tabela atual difere , temos de restaurar a tabela para o local original .
Dim r Como RangeDim s Como StringDim nOrigCol As Integer
Set r = Application.Names ( " mytab " ) . RefersToRanges = Application.Names ( " mytab " ) . comentário
' nenhum comentário significa que não há prazo anterior , de modo que nenhuma remoção de subtotal anterior, ou ajuste de escala original , é necessário.
"Mas , salve coluna começando da tabela para a próxima chamada para este function.If (s = "") ThenApplication.Names ( " mytab " ) comment = r.ColumnExit SubEnd Se
Application.Range ( . "a1 : xfd65536 "). RemoveSubtotal
'Ajustar intervalo: remover uma coluna se foi addednOrigCol = CInt (s) Se ( nOrigCol < r.Column ) Thenr.Previous.EntireColumn.Delete
End If
End Sub
Executar o Programa
Voltar para a planilha do Excel que tem a mesa de mytab . Atribuir os botões para as macros que você acabou de escrever . Botão direito do mouse no botão " Do Subtotais " e selecione " Atribuir Macro ". Na caixa de diálogo que aparece , selecione a função " doSubtotal " , que faz parte do código que você acabou de escrever . Feche a caixa de diálogo , clicando em " OK ", e atribuir a outra função macro que você escreveu, RemoveSubtotals , para o outro botão.
Execute o programa , verificando qualquer combinação de caixas de seleção e clique no botão fazer subtotais. Limpe os subtotais pressionando o outro botão.