Tellen Alle Karakters

02/22/2010 by admin

Wanneer u werkt met werkbladen-name die van andere mensen-die u misschien op zoek naar een manier tellen het aantal tekens in een werkblad. De volgende macro is erg handig in dat opzicht. Het telt het aantal tekens in een hele werkmap, inclusief tekens geven tekstvakken ingevoegd in de verschillende werkbladen.

Sub CountCharacters ()
Dim wkn Zoals werkblad
Dim rng als Waaier
Dim rCell als Waaier
Dim shp Zoals Shape

Dim bPossibleError zoals Van Boole
Dim bSkipMe zoals Van Boole

Dim Ltotaal As Long
Dim lTotal2 As Long
Dim lConstants As Long
Dim lFormulas As Long
Dim lFormulaValues ​​As Long
Dim lTxtBox As Long
Dim sMsg als Koord

On Error GoTo ErrHandler
Application.ScreenUpdating = False

Ltotaal = 0
lTotal2 = 0
lConstants = 0
lFormulas = 0
lFormulaValues ​​= 0
lTxtBox = 0
bPossibleError = false
bSkipMe = false
sMsg = ""

Voor Elke wkn In ActiveWorkbook.Worksheets
'Count personages in tekstvakken
Voor Elke shp In wks.Shapes
Als TypeName (SHP) <> "GroupObject" Dan
lTxtBox = lTxtBox + shp.TextFrame.Characters.Count
End If
Volgende shp

'Count tekens in cellen met constanten
bPossibleError = True
Set rng = wks.UsedRange.SpecialCells (xlCellTypeConstants)
Als bSkipMe Dan
bSkipMe = false
Anders
Voor Elke rCell In RNG
lConstants = lConstants + Len (rCell.Value)
Volgende rCell
End If

'Count tekens in cellen met formules
bPossibleError = True
Set rng = wks.UsedRange.SpecialCells (xlCellTypeFormulas)
Als bSkipMe Dan
bSkipMe = false
Anders
Voor Elke rCell In RNG
lFormulaValues ​​= lFormulaValues ​​+ Len (rCell.Value)
lFormulas = lFormulas + Len (rCell.Formula)
Volgende rCell
End If
Volgende wkn

sMsg = Format (lTxtBox, "#, ## 0") & _
"Tekens in tekstvakken" & vbCrLf
sMsg = sMsg & Format (lConstants, "#, ## 0") & _
"Tekens in constanten" & vbCrLf & vbCrLf

Ltotaal = lTxtBox + lConstants

sMsg = sMsg & Format (Ltotaal, "#, ## 0") & _
"Total tekens (als constanten)" & vbCrLf & vbCrLf

sMsg = sMsg & Format (lFormulaValues, "#, ## 0") & _
"Tekens in formules (als waarden)" & vbCrLf
sMsg = sMsg & Format (lFormulas, "#, ## 0") & _
"Tekens in formules (zoals formules)" & vbCrLf & vbCrLf

lTotal2 = Ltotaal + lFormulas
Ltotaal = Ltotaal + lFormulaValues

sMsg = sMsg & Format (Ltotaal, "#, ## 0") & _
"Total tekens (met formules als waarden)" & vbCrLf
sMsg = sMsg & Format (lTotal2, "#, ## 0") & _
"Total tekens (met formules als formules)"

MsgBox Prompt: = sMsg, Title: = "Karakter count"

ExitHandler:
Application.ScreenUpdating = True
Exit Sub

ErrHandler:
Als bPossibleError En Err.Number = 1004 Dan
bPossibleError = false
bSkipMe = True
Resume Next
Anders
MsgBox Err.Number & ":" & Err.Description
Hervatten ExitHandler
End If
End Sub

De macro kan lijken heel lang, maar het is zeer goed gestructureerd precies wat het doet. Ten eerste, het ziet er door alle tekstvakken in een werkblad. Als ze niet zijn gegroepeerd (je kunt niet tekens in gegroepeerd tekstvakken te tellen), dan de personages in hen worden opgeteld. Dan strookt de macro maximaal de personages in cellen met constanten. Tenslotte telt alle tekens die in cellen met formules. Het saldo van de macro wordt gebruikt om de informatie in een berichtvenster presenteren.

ExcelTips is uw bron voor kosteneffectieve Microsoft Excel training. Deze tip (8349) is van toepassing op Microsoft Excel 2007, 2010 en 2013. U kunt een versie van deze tip voor de oudere menu-interface van Excel hier vinden: Tellen All Characters.

Related Posts