Alguna vegada has intentat donar sentit a un llibre d'Excel desconegut (i complicat)? Seria útil veure un mapa que proporcioni una visió general de quines cel·les contenen constants i quines cel·les contenen valors.
Podeu crear una utilitat VBA que generi un mapa del full de treball actiu. El mapa es genera en un full de treball nou i consta de cel·les codificades per colors que us permeten identificar ràpidament valors, text i fórmules.
A continuació, veureu un exemple d'aquest mapa. Les cel·les que contenen text són verdes, les que contenen un valor numèric són grogues i les cel·les que contenen fórmules són vermelles. Aquest mapa us pot ajudar a detectar possibles errors. Per exemple, si una fórmula d'un bloc de fórmules s'ha sobreescriu per un valor, aquesta cel·la destacarà a la vista de mapa (com a la cel·la Q11 de l'exemple).
El codi QuickMap VBA
El procediment VBA que genera el mapa del full de treball es mostra a continuació. Si voleu utilitzar aquesta utilitat, només cal que copieu el codi i enganxeu-lo a un mòdul VBA. A continuació, activeu un full de treball i executeu la subrutina QuickMap.
Sub QuickMap ()
Dim FormulaCells com a variant
Atenuar les cèl·lules de text com a variant
Dim NumberCells com a variant
Dim Area As Range
Si TypeName(ActiveSheet) <> "Worksheet" (Full de treball) Aleshores sortiu de Sub
' Creeu variables d'objecte per a subconjunts de cel·les
En cas d'error Reprèn Següent
Estableix FormulaCells = Range ("A1").SpecialCells _
(xlFormules, xlNumbers + xlTextValues + xlLogical)
Estableix TextCells = Range(“A1”).SpecialCells(xlConstants, xlTextValues)
Estableix NumberCells = Interval(“A1”).SpecialCells(xlConstants, xlNumbers)
En cas d'error GoTo 0
' Afegiu un full nou i formateu-lo
Fulls.Afegir
Amb Cèl·lules
.ColumnWidth = 2
.Font.Size = 8
.HorizontalAlignment = xlCenter
Acaba amb
Application.ScreenUpdating = Fals
' Feu les cel·les de la fórmula
Si no és buit (FormulaCells), aleshores
Per a cada àrea de FormulaCells.Areas
Amb ActiveSheet.Range(Area.Address)
.Valor = "F"
.Interior.ColorIndex = 3
Acaba amb
Següent Àrea
Acaba si
' Feu les cel·les de text
Si no és buit (Cèl·lules de text), aleshores
Per a cada àrea de TextCells.Areas
Amb ActiveSheet.Range(Area.Address)
.Valor = "T"
.Interior.ColorIndex = 4
Acaba amb
Següent Àrea
Acaba si
' Feu les cel·les numèriques
Si no és buit (NumberCells), aleshores
Per a cada àrea de NumberCells.Areas
Amb ActiveSheet.Range(Area.Address)
.Valor = "N"
.Interior.ColorIndex = 6
Acaba amb
Següent Àrea
Acaba si
End Sub
Com funciona
El procediment primer verifica per assegurar-se que el full actiu és un full de treball. Si no és així, hi ha una sortida ràpida sense cap altra acció. Quan el full actiu és un full de treball, el procediment crea tres variables d'objecte mitjançant el mètode SpecialCells per identificar els diferents tipus de cel·les. El mètode SpecialCells és molt útil. Si no el coneixeu, consulteu-lo al fitxer d'ajuda en línia d'Excel. Observeu l'ús de On Error Resume Next. Això és per evitar l'error que es produeix si no hi ha cap cel·la qualificada, per exemple, si el full de treball no té fórmules.
A continuació, el procediment afegeix un nou full de treball, redueix l'amplada de la cel·la i estableix l'alineació horitzontal al centre. Aquest pas és estètic. Aleshores, el subordinat desactiva l'actualització de la pantalla per accelerar una mica les coses.
Els tres blocs de codi següents processen les cel·les. Si no es qualifica cap cel·la, la variable d'objecte és Buida, de manera que la sub prova d'això. Aleshores, la rutina fa un bucle per cada Àrea de l'objecte Range i formatea la cel·la. Podeu personalitzar fàcilment aquesta part de la subrutina per aplicar un format diferent.
Consulteu el complement Power Utility Pak per obtenir una versió molt més sofisticada d'aquesta utilitat.