Inhoudsopgave:
Video: Cursus VBA programmeren in Excel 2024
Heb je ooit geprobeerd om een onbekende (en gecompliceerde) Excel-werkmap te begrijpen? Het zou handig zijn om een kaart te zien die een overzicht geeft van welke cellen constanten bevatten en welke cellen waarden bevatten.
U kunt een VBA-hulpprogramma maken dat een kaart van het actieve werkblad genereert. De kaart wordt gegenereerd op een nieuw werkblad en deze bestaat uit cellen met kleurcodes waarmee u snel waarden, tekst en formules kunt identificeren.
Hieronder zie je een voorbeeld van zo'n kaart. Cellen die tekst bevatten, zijn groen, die cellen met een numerieke waarde zijn geel en cellen met formules zijn rood. Zo'n kaart kan u helpen potentiële fouten te herkennen. Als een formule in een formulesblok bijvoorbeeld is overschreven door een waarde, onderscheidt die cel zich in de kaartweergave (zoals in cel Q11 in het voorbeeld).
De QuickMap VBA-code
De VBA-procedure die het werkbladoverzicht genereert, wordt hieronder weergegeven. Als u dit hulpprogramma wilt gebruiken, kopieert u de code en plakt u deze in een VBA-module. Activeer vervolgens een werkblad en voer de subroutine QuickMap uit.
Sub QuickMap () Dim-formulecellen als Variant Dim TextCells als variante Dim NumberCells als variabel schemarig gebied als bereik If TypeName (ActiveSheet) "Worksheet" Then Exit Sub 'Maak objectvariabelen voor cel subsets On Error Resume Next Set FormulaCells = Range (“A1”). SpecialCells _ (xlFormulas, xlNumbers + xlTextValues + xlLicical) TextCells instellen = Bereik ("A1"). SpecialCells (xlConstants, xlTextValues) Set NumberCells = Range ("A1"). SpecialCells (xlConstants, xlNumbers) On Error GoTo 0 'Voeg een nieuw blad toe en formatteer het in spreadsheets. Voeg toe met cellen. ColumnWidth = 2. Lettertype. Grootte = 8. HorizontalAlignment = xlCenter End With Application. ScreenUpdating = False 'Doe de formule cellen If Not IsEmpty (FormulaCells) Then For Each Area In FormulaCells. Gebieden met ActiveSheet. Bereik (gebiedsadres). Waarde = "F". Interieur. ColorIndex = 3 eindigt met het volgende gebiedseinde als 'Voer de tekstcellen als niet leeg uit (tekstcellen) dan voor elk gebied in tekstcellen. Gebieden met ActiveSheet. Bereik (gebiedsadres). Waarde = "T". Interieur. ColorIndex = 4 eindigen met het volgende gebiedseind als 'Voer de numerieke cellen als niet leeg (nummercellen) dan voor elk gebied in de cijfercellen in. Gebieden met ActiveSheet. Bereik (gebiedsadres). Waarde = "N". Interieur. ColorIndex = 6 Einde met volgende gebiedseind als einde Sub
Hoe het werkt
De procedure controleert eerst of het actieve werkblad een werkblad is. Als dat niet het geval is, is er een snelle exit zonder verdere actie. Wanneer het actieve werkblad een werkblad is, maakt de procedure drie objectvariabelen met behulp van de SpecialCells-methode om de verschillende celtypen te identificeren.De SpecialCells-methode is erg handig. Als u niet bekend bent, bekijk het in het online helpbestand van Excel. Let op het gebruik van On Error Resume Next. Dit is om de fout te voorkomen die optreedt als er geen cellen in aanmerking komen, bijvoorbeeld als het werkblad geen formules heeft.
Vervolgens voegt de procedure een nieuw werkblad toe, verkleint de celbreedte en stelt de horizontale uitlijning in op middelpunt. Deze stap is cosmetisch. De sub schakelt vervolgens het updaten van het scherm uit om de dingen een beetje te versnellen.
De volgende drie codeblokken verwerken de cellen. Als er geen cellen in aanmerking komen, is de objectvariabele Leeg, dus de subtests hiervoor. Vervolgens lust de routine door elk gebied in het bereikobject en formatteert de cel. U kunt dit gedeelte van de subroutine eenvoudig aanpassen om andere opmaak toe te passen.
Bekijk de Power Utility Pak-invoegtoepassing voor een veel geavanceerdere versie van dit hulpprogramma.