VBA实用小程序78:统计工作簿内文本框和批注中的字符及单词数

excelperfect

下面的程序可以统计工作簿所有工作表中文本框和批注内的字符和单词的数量。

Sub CountCharWorBOXCMT()

Dim wks As Worksheet

Dim lCommentch As Long

Dim lCommentwords As Long

Dim lTxtBoxChar As Long

Dim lTxtBoxCharWords As Long

Dim objShp As Shape

Dim sMsg As String

Dim vbaArray

Application.ScreenUpdating = False

lCommentch = 0

lCommentwords = 0

lTxtBoxChar = 0

lTxtBoxCharWords = 0

For Each wks In ActiveWorkbook.Worksheets

For Each objShp In wks.Shapes

' 统计文本框中的字符和单词

If objShp.Type = 17 Then

IfLen(objShp.TextFrame2.TextRange.Characters.Text) <> 0 Then

lTxtBoxChar = lTxtBoxChar +objShp.TextFrame.Characters.Count

vbaArray =VBA.Split(objShp.TextFrame2.TextRange.Characters.Text, ' ')

lTxtBoxCharWords =lTxtBoxCharWords + UBound(vbaArray) + 1

End If

End If

' 统计批注中的字符和单词

If objShp.Type = 4 Then

With objShp.TextFrame.Characters

lCommentch = lCommentch +Len(.Text)

vbaArray = VBA.Split(.Text,' ')

lCommentwords =lCommentwords + UBound(vbaArray) + 1

End With

End If

Next objShp

Next wks

sMsg = '文本框中的字符数: ' & Format(lTxtBoxChar,'### ### ##0') & vbCrLf

sMsg = sMsg & '文本框中的单词数: ' &Format(lTxtBoxCharWords, '### ### ##0') & vbCrLf & vbCrLf

sMsg = sMsg & '批注中的字符数: ' &Format(lCommentch, '### ### ##0') & vbCrLf

sMsg = sMsg & '批注中的单词数: ' &Format(lCommentwords, '### ### ##0') & vbCrLf & vbCrLf

MsgBox Prompt:=sMsg, Title:='统计汇总'

Application.ScreenUpdating = True

End Sub

在示例工作簿中运行后的效果如下图1所示。

图1

小结:

1. 注意遍历工作表中特定形状的程序代码。

2. 注意统计单词的代码技巧。

注:本程序整理自ozgrid.com论坛,供有兴趣的朋友学习参考。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。

(0)

相关推荐

  • 【实用贴】50个Excel小技巧

    Microsoft Excel是微软公司的办公软件Microsoft office的组件之一,是由Microsoft为Windows和Apple Macintosh操作系统的电脑而编写和运行的一款试算 ...

  • VBA实用小程序71:统计工作簿中的字符数

    excelperfect 引言:这是在ozgrid.com论坛中看到的一个VBA程序,特辑录于此,供有兴趣的朋友学习参考. 下面的程序统计工作簿中所有工作表的字符总数,包括其中的文本框中的字符数. S ...

  • VBA实用小程序79:统计不同值或唯一值的VBA自定义函数

    excelperfect 在文章开始之前,解释一下什么是不同值?什么是唯一值? 例如,下面的一组数据: a,a,b,b,c,d,e,e,f 我们说,这组数据有6个不同值:a,b,c,d,e,f:有3个 ...

  • VBA实用小程序64: 标识工作表中的名称区域

    excelperfect 在工作表中定义名称是一项很强大的功能,我们可以将定义名称的单元格区域看作一个整体,从而方便对其进行很多操作.在进行工作表数据处理时,很多人都会定义名称. 有时候,在分析工作表 ...

  • VBA实用小程序77:生成字符的所有组合

    excelperfect 这是在stackoverflow.com中看到的一段VBA程序,生成所有7个字符中5个字符的任意组合,有兴趣的朋友可以试试. 程序代码如下: Public Function ...

  • VBA实用小程序73:厘米、英寸和像素、磅的转换

    excelperfect Excel.PowerPoint和Word使用了一种称为磅的测量方法.但是,标准应用程序菜单中的测量单位是厘米或英寸. 可以在Excel选项更改默认的测量单位.单击" ...

  • VBA实用小程序75:选择所有的合并单元格

    excelperfect 在使用VBA操作单元格时,合并的单元格可能会导致问题,甚至在工作表中进行一些操作时,合并的单元格也可能会导致错误.因此,如果我们能够识别合并的单元格,就可以确定对它们采取的操 ...

  • VBA实用小程序74:将合并单元格转换为跨列居中

    excelperfect "合并后居中"按钮是Excel界面中一个非常方便的功能,很多人都喜欢使用合并单元格.然而,对合并单元格进行一些操作会带来一些问题,Excel会给出下图1所 ...

  • VBA实用小程序72:遍历文件夹(和子文件夹)中的文件

    excelperfect 很多时候,我们都想要遍历文件夹中的每个文件,例如在工作表中列出所有文件名.对每个文件进行修改.VBA给我们提供了一些方式:(1)Dir函数:(2)File System Ob ...

  • VBA实用小程序20:保护含有公式的单元格

    很多时候,你都不想别人修改或者删除你的工作表中含有公式的单元格,因为这样会打乱你的工作表结构. 下面的代码锁定当前工作表中含有公式的所有单元格,你不能删除或者修改这些单元格,除非你解除工作表保护.当然 ...