ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2561|回复: 10

[分享] 光标乾坤大挪移

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-5-8 08:03 | 显示全部楼层 |阅读模式
本帖最后由 相见是缘8 于 2019-5-8 08:08 编辑

光标乾坤大挪移

光标乾坤大挪移,第1式:move与expand

名称:                          值:     说明:
wdCell                           12      单元格。
wdCharacter                    1      字符。
wdCharacterFormatting   13      字符格式。
wdColumn                       9      列。
wdItem                         16      所选项。
wdLine                           5      一个线段。
wdParagraph                   4      段落。
wdParagraphFormatting   14      段落格式。
wdRow                           10      行。
wdScreen                        7       屏幕尺寸。
wdSection                        8       一节。
wdSentence                     3      句子。
wdStory                           6       部分。
wdTable                         15      一个表格。
wdWindow                      11      窗口。
wdWord                           2       字。





Sub demo1()  '给每一句话标注序号。
    For i = 1 ToInputBox("标注句数")
        Selection.MovewdSentence, 1
        If i = 1 Then Selection.Move wdSentence,-1
       Selection.TypeText i & "."
    Next
End Sub




Sub test()
    Dim i%
        For i = 1 ToInputBox("请输入要标注的句数")
       Selection.Move wdSentence, 1
       If i = 1 Then Selection.Move wdSentence, -1
       Selection.TypeText i & "、"
    Next
End Sub





Sub demo2()  '给行着色。
    Dim icount%, i%
    icount =InputBox("在光标处往下多少行?")
    For i = 1 To icount
       Selection.Move 1, 1  '光标移动。
       Selection.Expand 5  '内容扩展。
       Selection.Font.Fill.ForeColor.RGB = RGB(100 * (i Mod 2 + 1), 50 * (i Mod2), 0)
    Next
End Sub





Sub test2()
    Dim n%
    For n = 1 ToInputBox("在光标处往下着色多少行?")
    Selection.Move 1, 1
    Selection.Expand 5
    If n Mod 2 Then
        Selection.Font.Fill.ForeColor.RGB= RGB(153, 0, 0)
    Else
        Selection.Font.Fill.ForeColor.RGB= RGB(255, 51, 204)
       End If
    Next
End Sub





Sub tedd()
    For i = 1 To 10
    Selection.Move 5, 1
    Selection.MoveUntilCset:=Chr$(13), Count:=wdForward
    '移动范围或所选内容的结束字符位置。
    Selection.MoveEnd
    Selection.MoveEndUntil
    Selection.MoveEndWhile
    '移动指定的所选内容的起始位置。
    'Selection.MoveStart(单位,数量)
    '移动指定的所选内容的起始位置,直到在文档中找到一个指定的字符。如果是在文档中向后移动,则扩展所选内容。
    Selection.MoveStartUntil
    Selection.MoveStartWhile
    '-------------------上下左右移动--------------------
    'Selection.Move(移动结束字符位置时所基于的单位,数量)
    '将选定内容向下移动,并返回移动距离的单位数。
    'Selection.MoveDown(单位,数量,移动还是扩展)
    '将所选内容向上移动,并返回移动的单位数。
    'Selection.MoveUp(单位,数量,移动还是扩展)
    '将选定内容向左移动,并返回移动距离的单位数。
    'Selection.MoveLeft(单位,数量,移动还是扩展)
    '将选定内容向左移动,并返回移动距离的单位数。
    'Selection.MoveRight(单位,数量,移动还是扩展)
    '移动指定的所选内容,直到在文档中找到一个指定的字符。
    Selection.MoveUntil
    '当在文档中找到任何指定的字符时,移动指定的选择范围。
    Selection.MoveWhile
    Next
End Sub





Sub test555()
    Selection.MoveStartUntil"的",3
End Sub

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-8 08:04 | 显示全部楼层
光标乾坤大挪移,第2式:Collaps和Information


'1.Collapse
'Selection.Collapse
'Range.Collapse

'指定某范围或所选内容的折叠方向。
wdCollapseEnd      0   '将该范围折叠到结束点。
wdCollapseStart    1   '将该范围折叠到起始点。



Sub demo1()
    Dim p As Paragraph
    For Each p In ThisDocument.Paragraphs
        p.Range.Select
        Selection.Collapse 0
        Selection.Move 1, -1
        Selection.TypeText "共<" & p.Range.Characters.Count - 1 & ">字"
    Next
End Sub



Sub demo2()
    Dim p As Paragraph, rng As Range
    For Each p In ThisDocument.Paragraphs
        Set rng = p.Range
        rng.Collapse 0
        rng.Move 1, -1
        rng.Text = "(" & p.Range.Characters.Count & "个字)"
    Next
End Sub



Sub test1()  '统计每个段落字数。
    Dim p As Paragraph, myrng As Range
    For Each p In ThisDocument.Paragraphs
        Set myrng = p.Range
        myrng.Collapse 0
        myrng.Move 1, -1
        myrng.Text = "(共" & p.Range.Characters.Count - 1 & "字)"
    Next
End Sub



'Information
'Selection.Information
'Range.Information
'指定返回的涉及指定所选内容或区域的信息的类型。

Sub demodd()
    MsgBox ActiveDocument.Paragraphs(3).Range.Information(wdFirstCharacterLineNumber)
End Sub



Sub test2()  '行交叉底纹设置。
    f = Selection.Information(wdFirstCharacterLineNumber)
    Selection.Collapse 0
    e = Selection.Information(wdFirstCharacterLineNumber)
    For i = f To e - 1
        Selection.Move wdLine, -1
        Selection.Expand wdLine
        Selection.Font.Shading.BackgroundPatternColor = 5296274 * (i Mod 2) + 1
        Selection.Collapse 1
    Next
End Sub



Sub tddd()
    Dim f%, e%, i%
    f = Selection.Information(wdFirstCharacterLineNumber)
    Selection.Collapse 0
    e = Selection.Information(wdFirstCharacterLineNumber) - 1
    For i = f To e
        Selection.Move wdLine, -1
        Selection.Expand wdLine
        If i Mod 2 Then
            Selection.Font.Shading.BackgroundPatternColor = RGB(255, 255, 200)
        Else
            Selection.Font.Shading.BackgroundPatternColor = RGB(180, 255, 230)
        End If
         Selection.Move wdLine, -1
    Next
End Sub

名称:                值:               说明:
wdActiveEndAdjustedPageNumber 1   '返回页码,在该页中包含指定的所选内容或区域的活动结尾。如果设置一个起始页码或进行其他手动调整,则返回经调整的页码(与  wdActiveEndPageNumber 不同)。
wdActiveEndPageNumber 3   '返回页码,在该页中包含指定的所选内容或区域的活动结尾。从文档开头计数。忽略任何对页码的手动调整(与  wdActiveEndAdjustedPageNumber 不同)。
wdActiveEndSectionNumber 2   '返回节号,在该节中包含了指定的所选内容或区域的活动结尾。
wdAtEndOfRowMarker 31   '如果指定的所选内容或区域位于表格的行结尾标记处,则该参数返回 True。
wdCapsLock 21   '如果 Caps Lock 有效,则该参数返回 True。
wdEndOfRangeColumnNumber 17   '返回表格列号,在该表格列中包含指定的所选内容或区域的结尾。
wdEndOfRangeRowNumber 14   '返回表格行号,在该表格行中包含指定的所选内容或区域的结尾。
wdFirstCharacterColumnNumber 9   '返回指定的所选内容或区域中第一个字符的位置。如果所选内容或区域是折叠的,则返回紧靠所选内容或区域右侧的字符编号(该编号与状态栏中“列”后面的字符列数相同)。
wdFirstCharacterLineNumber 10   '返回指定的所选内容或区域中第一个字符的位置。如果所选内容或区域是折叠的,则返回紧靠所选内容或区域右侧的字符编号(该编号与状态栏中“行”后面的字符行数相同)。
wdFrameIsSelected 11   '如果所选内容或区域是一个完整的图文框或文本框,则该参数返回 True。
wdHeaderFooterType 33   '返回一个值,该值指示包含了指定所选内容或区域的页眉或页脚的类型。有关其他信息,请参阅“注解”部分中的表。
wdheaderfootertype 返回一个值,该值表明包含了指定的所选内容或区域的页眉或页脚的类型,如下表所示。
值:  页眉或页脚的类型:
- 1   无。
0   偶数页页眉。
1   奇数页页眉。
2   偶数页页脚。
3   奇数页页脚。
4   第一个页眉。
5   第一个页脚。
wdHorizontalPositionRelativeToPage 5   '返回指定的所选内容或区域的水平位置。该位置是所选内容或区域的左边缘与页面的左边缘之间的距离,以磅为单位(1 磅 = 20 缇,72 磅 = 1 英寸)。如果所选内容或区域未显示在屏幕上,则该参数返回 -1。
wdHorizontalPositionRelativeToTextBoundary 7   '返回指定所选内容或区域相对于周围最近的正文边界左边缘的水平位置,以磅为单位(1 磅 = 20 缇,72 磅 = 1 英寸)。如果所选内容或区域未显示在屏幕上,则该参数返回 -1。
wdInClipboard 38   '有关该常量的信息,请参阅包含在 Microsoft Office Macintosh Edition 中的语言参考帮助。
wdInCommentPane 26   '如果指定的所选内容或区域位于批注窗格,则该参数返回 True。
wdInEndnote 36   '如果指定的所选内容或区域位于页面视图的尾注区内,或者位于普通视图的尾注窗格中,则该参数返回 True。
wdInFootnote 35   '如果指定的所选内容或区域位于页面视图的脚注区内,或者位于普通视图的脚注窗格中,则该参数返回 True。
wdInFootnoteEndnotePane 25   '如果指定的所选内容或区域位于普通视图的脚注或尾注窗格中,或页面视图的脚注或尾注区内,则该参数返回 True。有关详细信息,请参阅前面关于  wdInFootnote 和  wdInEndnote 的说明。
wdInHeaderFooter 28   '如果指定的所选内容或区域位于页眉或页脚窗格中,或者位于页面视图的页眉或页脚中,则该参数返回 True。
wdInMasterDocument 34   '如果所选内容或区域位于主控文档(即至少包含一个子文档的文档)中,则该参数返回 True。
wdInWordMail 37   '如果指定的所选内容或区域位于页眉或页脚窗格中,或者位于页面视图的页眉或页脚中,则该参数返回 True。
wdinwordmail 返回一个值,该值表明了所选内容或区域的的位置,如下表所示。
值: 位置:
0   所选内容或区域不在一条电子邮件消息中。
1   所选内容或区域位于正在发送的电子邮件中。
2   所选内容或区域位于正在阅读的电子邮件中。
wdMaximumNumberOfColumns 18   '返回所选内容或区域中任何行的最大表格列数。
wdMaximumNumberOfRows 15   '返回指定的所选内容或区域中表格的最大行数。
wdNumberOfPagesInDocument 4   '返回与所选内容或区域相关联的文档的页数。
wdNumLock 22   '如果 Num Lock 有效,则该参数返回 True。
wdOverType 23   '如果启用改写模式,则该参数返回 True。可使用 Overtype 属性改变改写模式的状态。
wdReferenceOfType 32   '返回一个值,该值表明所选内容相对于脚注、尾注或批注引用的位置,如“注解”部分中的表所示。
wdRevisionMarking 24   '如果打开修订功能,则该参数返回 True。
wdSelectionMode 20   '返回一个值,该值表明当前的选定模式,如下表所示。
wdSelectionMode   '返回一个值,该值表明当前的选定模式,如下表所示。
值: 选定模式:
0   常规选定。
1   扩展选定。
2   列选定。
wdStartOfRangeColumnNumber 16   '返回表格列号,在该表格列中包含所选内容或区域的起点。
wdStartOfRangeRowNumber 13   '返回表格行号,在该表格行中包含所选内容或区域的起点。
wdVerticalPositionRelativeToPage 6   '返回所选内容或区域的垂直位置,即所选内容的上边缘与页面的上边缘之间的距离,以磅为单位(1 磅 = 20 缇,72 磅 = 1 英寸)。如果所选内容未显示在文档窗口中,则该参数返回 -1。
wdVerticalPositionRelativeToTextBoundary 8   '返回所选内容或区域相对于周围最近的正文边界的上边缘的垂直位置,以磅为单位(1 磅 = 20 缇,72 磅 = 1 英寸)。该参数可用于在图文框或表格中确定插入点位置。如果所选内容未显示在屏幕中,则该参数返回 -1。
wdWithInTable 12   '如果所选内容位于表格中,则该参数返回 True。
wdZoomPercentage 19  '返回由percentage 属性设置的当前的放大百分比。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-8 08:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
光标乾坤大挪移,第3式:走四方。


Sub demo()
    Selection.MoveDown   '上。
    Selection.MoveDown   '下。
    Selection.MoveRight  '右。
    Selection.MoveLeft   '左。
End Sub



Sub 按字数着色()
    Dim icount%, n%, i%
    icount = Selection.Characters.Count
    n = InputBox("请输入字数")
    Selection.Collapse 1
    For i = 1 To icount / n
        Selection.Collapse 0
        Selection.MoveRight wdCharacter, n, wdExtend
        Selection.Font.Shading.BackgroundPatternColor = RGB(250, 100 * (i Mod n), 200)
    Next
End Sub



Sub deme1()
    Dim icount%, i%, n%
    n = InputBox("请输入着色的字数")
    icount = Selection.Characters.Count
    Selection.Collapse 1
    For i = 1 To icount / n
        Selection.MoveRight 1, n, wdExtend
        Selection.Font.Shading.BackgroundPatternColor = RGB(250, 100 * (i Mod n), 200)
        Selection.Collapse 0
    Next i
End Sub



Sub 隔行着色1()  '自下而上。
    Dim rng As Range, f%, e%, i%, cot%
    cot = InputBox("着色间隔行数")
    Set rng = Selection.Range
    f = rng.Information(wdFirstCharacterLineNumber)
    rng.Collapse 0
    e = rng.Information(wdFirstCharacterLineNumber)
        rng.Select
    For i = f / cot To e / cot - 1
        Selection.MoveUp wdLine, cot, wdExtend
        Selection.Expand wdLine
        Selection.Font.Shading.BackgroundPatternColor = RGB(100 * (i Mod cot), 200, 255)
        Selection.Collapse 1
    Next
End Sub



Sub demo2()
    Dim rng As Range, f%, e%, i%, r%, n%
    r = InputBox("请输入隔行着色的行数")
    Set rng = Selection.Range
    f = rng.Information(wdFirstCharacterLineNumber)
    rng.Collapse 0
    e = rng.Information(wdFirstCharacterLineNumber)
    rng.Select
    For i = f / r To e / r - 1
        n = n + 1
        Selection.MoveUp wdLine, r, wdExtend
        Selection.Expand wdLine
        Selection.Font.Shading.BackgroundPatternColor = RGB(100 * (n Mod r), 100, 200)
        Selection.Collapse 1
    Next i
End Sub



Sub 隔行着色2()  '自上而下。
    Dim rng As Range
    cot = InputBox("行数")
    Set rng = Selection.Range
    rng.Collapse 0
    e = rng.Information(wdFirstCharacterLineNumber)
    Set rng = Selection.Range
    rng.Collapse 1
    f = rng.Information(wdFirstCharacterLineNumber)
    rng.Select
    For i = f / cot To e / cot - 1
        n = n + 1
        Selection.MoveDown wdLine, cot, wdExtend
        Selection.Expand wdLine
        cc = 100 * ((i * cot) Mod cot)
        Selection.Font.Shading.BackgroundPatternColor = RGB(100 * (n Mod cot), 200, 255)
        Selection.Collapse
        Selection.MoveDown , cot
    Next
End Sub



Sub deme5()
    Dim rng As Range, f%, e%, r%
    r = InputBox("请输入隔行着色的行数")
    '-------------结束点---------------
    Set rng = Selection.Range
    rng.Collapse 0
    e = rng.Information(wdFirstCharacterLineNumber)
    '-------------起始点---------------
    Set rng = Selection.Range
    rng.Collapse 1
    f = rng.Information(wdFirstCharacterLineNumber)
    rng.Select
    For i = f / r To e / r - 1
        n = n + 1
        Selection.MoveDown wdLine, r, wdExtend
        Selection.Expand wdLine
        Selection.Font.Shading.BackgroundPatternColor = RGB(100 * (n Mod r), 100, 200)
        Selection.Collapse 1
        Selection.MoveDown wdLine, r
    Next
End Sub



wdCell 12   '单元格。
wdCharacter 1   '字符。
wdCharacterFormatting 13   '字符格式。
wdColumn 9   '列。
wdItem 16   '所选项。
wdLine 5   '一个线段。
wdParagraph 4   '段落。
wdParagraphFormatting 14   '段落格式。
wdRow 10   '行。
wdScreen 7   '屏幕尺寸。
wdSection 8   '一节。
wdSentence 3   '句子。
wdStory 6   '部分。
wdTable 15   '一个表格。
wdWindow 11   '窗口。
wdWord 2   '字。

TA的精华主题

TA的得分主题

发表于 2019-5-8 15:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 413191246se 于 2019-5-8 15:36 编辑

祝贺 楼主! 成果斐然! 我最初就是从 .MoveEnd 方法开始学习进步的,有些方法、属性确实很实用。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-8 15:44 | 显示全部楼层
413191246se 发表于 2019-5-8 15:34
祝贺 楼主! 成果斐然! 我最初就是从 .MoveEnd 方法开始学习进步的,有些方法、属性确实很实用。

老师,这不是我的成果,是昨天无意中在网上搜到的,凭我目前的水平还远远用不上,贴出来是看有用得上的朋友否?

TA的精华主题

TA的得分主题

发表于 2020-4-21 10:00 | 显示全部楼层
相见是缘8 发表于 2019-5-8 15:44
老师,这不是我的成果,是昨天无意中在网上搜到的,凭我目前的水平还远远用不上,贴出来是看有用得上的朋 ...

很不错的资料,谢谢分享。
另外,转发的内容,应标明所引用源,这是对原创人的尊重。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-4-21 15:52 | 显示全部楼层
ggmmlol 发表于 2020-4-21 10:00
很不错的资料,谢谢分享。
另外,转发的内容,应标明所引用源,这是对原创人的尊重。

不是不标明!是那个上面设有显示具体的原创人是谁。

TA的精华主题

TA的得分主题

发表于 2020-4-21 16:40 | 显示全部楼层
相见是缘8 发表于 2020-4-21 15:52
不是不标明!是那个上面设有显示具体的原创人是谁。


其实你这样的辩解,不如不辩解的~~~

TA的精华主题

TA的得分主题

发表于 2020-4-21 16:50 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-4-22 07:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ggmmlol 发表于 2020-4-21 16:40
其实你这样的辩解,不如不辩解的~~~

这有什么值得辩解的?实话实说罢了!首先我就说了是  “分享”,第二个我声明了不是我写的,是来源于网上。你找到的这个内容来源形式,能确定它就是唯一?能确定就是我看到内容来源?再一个你能保证你在网上每看到的所有东西都是 “原创” ?不是转载?不是盗版?都有  “原创人”  署名?你也太矫情了吧!……
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-24 12:06 , Processed in 0.056015 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表