Usando VBA para criar um Mapa de Planilha

Você já tentou fazer sentido de um desconhecido (e complicado) livro do Excel? Seria útil para ver um mapa que fornece uma visão geral do que as pilhas contêm constantes e que as células contêm valores.

Você pode criar um utilitário VBA que gera um mapa da planilha ativa. O mapa é gerado em uma nova planilha, e consiste em células com código de cores que permitem identificar rapidamente os valores, texto e fórmulas.

Abaixo, você vê um exemplo de tal mapa. Células que contêm texto são verdes, aqueles que contêm um valor numérico são amarelas, e as células que contêm fórmulas são vermelhos. Tal mapa pode ajudar a detectar possíveis erros. Por exemplo, se uma fórmula em um bloco de fórmulas foi substituído por um valor, essa célula irá destacar-se na visualização do mapa (como em Q11 celular no exemplo).

image0.jpg

O código QuickMap VBA

O procedimento VBA que gera o mapa planilha está listado abaixo. Se você gostaria de usar este utilitário, basta copiar o código e cole-a um módulo VBA. Em seguida, ativar uma planilha e executar a sub-rotina QuickMap.

Sub QuickMap () FormulaCells Dim TextCells VariantDim Como NumberCells VariantDim como a área VariantDim Como RangeIf TypeName (ActiveSheet) lt;> # 147 Planilha # 148- Then Exit Sub 'Criar variáveis ​​de objeto para Erro subsetsOn celular Resume NextSet FormulaCells = Range (# 147-A1 # 148 -). SpecialCells _ (xlFormulas, xlNumbers + xlTextValues ​​+ xlLogical) Definir TextCells = Range (# 147-A1 # 148 -.) SpecialCells (xlConstants, xlTextValues) Definir NumberCells = Range (# 147-A1 # 148 -.) SpecialCells (xlConstants, xlNumbers) On Error GoTo 0 "Adicionar uma nova folha e formato itSheets.AddWith Cells. ColumnWidth = 2.Font.Size = 8.HorizontalAlignment = xlCenterEnd WithApplication.ScreenUpdating = False 'Faça a fórmula cellsIf Not IsEmpty (FormulaCells) ThenFor cada área FormulaCells.AreasWith ActiveSheet.Range (Area.Address) .Value = # 147-F # 148-.Interior.ColorIndex = 3End WithNext AreaEnd Se 'Faça o texto cellsIf Not IsEmpty (TextCells) ThenFor cada área TextCells.AreasWith ActiveSheet.Range (Area.Address) .Value = Nº 147-T # 148-.Interior.ColorIndex = 4End WithNext AreaEnd Se 'Faça o numérico cellsIf Not IsEmpty (NumberCells) ThenFor cada área NumberCells.AreasWith ActiveSheet.Range (Area.Address) .Value = Nº 147-N # 148-.Interior.ColorIndex = 6End WithNext AreaEnd IfEnd Sub

Como funciona

O primeiro procedimento verifica se a planilha ativa é uma planilha. Se não for, há uma saída rápida com nenhuma outra ação. Quando a planilha ativa é uma planilha, o procedimento cria três variáveis ​​de objeto usando a SpecialCells método para identificar os vários tipos de células. o SpecialCells método é muito útil. Se você não está familiarizado com ele, verificá-la no arquivo de ajuda on-line do Excel. Observe o uso da On Error Resume Next. Isso é para evitar o erro que ocorre se há células qualificar - por exemplo, se a planilha não tem fórmulas.

Em seguida, o procedimento adiciona uma nova planilha, reduz a largura da célula, e define o alinhamento horizontal para o centro. Esta etapa é cosmético. O sub seguida, desliga a atualização da tela para acelerar as coisas um pouco.

Os próximos três blocos de processo Código das células. Se há células qualificar, a variável de objeto é vazio, assim que os testes sub para isso. Em seguida, os laços de rotina através de cada área no objeto Range e formata a célula. Você pode facilmente personalizar esta parte da sub-rotina para aplicar uma formatação diferente.

Confira a Poder Utility Pak add-in para uma versão muito mais sofisticada deste utilitário.

menu