Telle Alle tegn

April 5  by Eliza

Når du arbeider med regneark-særlig de fra andre folk-du kan være på utkikk etter en måte å telle antall tegn i et regneark. Følgende makro er meget praktisk i den forbindelse. Det teller antall tegn i en hel arbeidsbok, inkludert eventuelle tegn i noen tekstbokser som settes inn i de ulike regnearkene.

Sub CountCharacters ()
Dim wks Som regneark
Dim RNG Som Range
Dim Rceii Som Range
Dim SHP Som Shape

Dim bPossibleError Som boolsk
Dim bSkipMe Som boolsk

Dim lTotal Som Long
Dim lTotal2 Som Long
Dim lConstants As Long
Dim lFormulas As Long
Dim lFormulaValues ​​As Long
Dim lTxtBox Som Long
Dim sMsg As String

On Error GoTo ErrHandler
Application.ScreenUpdating = False

lTotal = 0
lTotal2 = 0
lConstants = 0
lFormulas = 0
lFormulaValues ​​= 0
lTxtBox = 0
bPossibleError = False
bSkipMe = False
sMsg = ""

For hver wks I ActiveWorkbook.Worksheets
'Count tegn i tekstbokser
For Hver SHP I wks.Shapes
Hvis Typename (SHP) <> "GroupObject" Da
lTxtBox = lTxtBox + shp.TextFrame.Characters.Count
End If
Neste SHP

'Count tegn i celler som inneholder konstanter
bPossibleError = True
Satt RNG = wks.UsedRange.SpecialCells (xlCellTypeConstants)
Hvis bSkipMe Deretter
bSkipMe = False
Else
For Hver Rceii I RNG
lConstants = lConstants + Len (rCell.Value)
Neste Rceii
End If

'Count tegn i celler som inneholder formler
bPossibleError = True
Satt RNG = wks.UsedRange.SpecialCells (xlCellTypeFormulas)
Hvis bSkipMe Deretter
bSkipMe = False
Else
For Hver Rceii I RNG
lFormulaValues ​​= lFormulaValues ​​+ Len (rCell.Value)
lFormulas = lFormulas + Len (rCell.Formula)
Neste Rceii
End If
Neste wks

sMsg = Format (lTxtBox, "#, ## 0") & _
"Tegn i tekstbokser" & vbCrLf
sMsg = sMsg & Format (lConstants, "#, ## 0") & _
"Tegn i konstanter" & vbCrLf & vbCrLf

lTotal = lTxtBox + lConstants

sMsg = sMsg & Format (lTotal, "#, ## 0") & _
"Totalt tegn (som konstanter)" & vbCrLf & vbCrLf

sMsg = sMsg & Format (lFormulaValues, "#, ## 0") & _
"Tegn i formler (som verdier)" & vbCrLf
sMsg = sMsg & Format (lFormulas, "#, ## 0") & _
"Tegn i formler (som formler)" & vbCrLf & vbCrLf

lTotal2 = lTotal + lFormulas
lTotal = lTotal + lFormulaValues

sMsg = sMsg & Format (lTotal, "#, ## 0") & _
"Totalt tegn (med formler som verdier)" & vbCrLf
sMsg = sMsg & Format (lTotal2, "#, ## 0") & _
"Totalt tegn (med formler som formler)"

MsgBox Tekst: = sMsg, Tittel: = "Character count"

ExitHandler:
Application.ScreenUpdating = True
Exit Sub

ErrHandler:
Hvis bPossibleError Og err.number = 1004 Da
bPossibleError = False
bSkipMe = True
Gjenoppta Neste
Else
MsgBox err.number & ":" & Err.Description
Gjenoppta ExitHandler
End If
End Sub

Makroen kan virke ganske lang, men det er veldig godt strukturert i nøyaktig hva den gjør. Først ser det gjennom alle tekstbokser i et regneark. Hvis de ikke er gruppert (du kan ikke telle tegn i gruppert tekstbokser), så karakterene i dem er telt opp. Deretter makroen stemmer opp karakterene i celler som inneholder konstanter. Til slutt, teller det alle tegnene som brukes i celler som inneholder formler. Balansen i makro brukes til å presentere informasjonen på en meldingsboks.

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (8349) gjelder for Microsoft Excel 2007, 2010, og 2013. Du kan finne en versjon av dette tipset for den eldre menygrensesnittet av Excel her: Telle Alle tegn.