ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何设置每行的前两个单词格式为斜体?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-12-4 16:30 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Clochidion lanceolarium (Roxb.) Voigt 艾胶算盘子
Fimbristylis fusca (Nees) Benth.暗褐飘拂草
。。。
如上植物的学名,要设置每行的前两个单词格式为斜体,请问有什么方法?谢谢
所需效果如下:
Clochidion lanceolarium (Roxb.) Voigt 艾胶算盘子
Fimbristylis fusca (Nees) Benth.暗褐飘拂草
。。。

TA的精华主题

TA的得分主题

发表于 2011-12-4 21:21 | 显示全部楼层
还是用无能不能的宏!

TA的精华主题

TA的得分主题

发表于 2011-12-5 00:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
录制一个宏,复制如下代码:(如果不知道何为宏,查 WORD 帮助---录制宏)

Sub 前两个单词斜体()
    Selection.WholeStory
    Selection.Font.Color = wdColorBlue
' 删除空行
    Dim i As Paragraph
    For Each i In ActiveDocument.Paragraphs
        If Len(Trim(i.Range)) = 1 Then i.Range.Delete
    Next
' 前两个单词斜体
    For Each i In ActiveDocument.Paragraphs
        i.Range.Select
        With Selection.Words(1)
            .Font.Color = wdColorRed
            .Font.Italic = True
            .Bold = True
        End With
        i.Range.Select
        With Selection.Words(2)
            .Font.Color = wdColorRed
            .Font.Italic = True
            .Bold = True
        End With
    Next
End Sub

TA的精华主题

TA的得分主题

发表于 2011-12-5 08:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学习ing……

TA的精华主题

TA的得分主题

发表于 2011-12-5 14:52 | 显示全部楼层
本帖最后由 sqhsqhli 于 2011-12-5 15:01 编辑

3楼代码是在段落中循环,这个是按1楼要求每行。。。
Sub s1()
With Selection
.EndKey unit:=wdStory
Do Until ActiveDocument.Range.Start = .Start
.MoveStart unit:=wdLine, Count:=-1
.Words(1).Font.Italic = True
.Words(2).Font.Italic = True
.HomeKey unit:=wdLine
Loop
End With
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-8 09:01 | 显示全部楼层
本帖最后由 hunthunt2002 于 2011-12-8 09:02 编辑

谢谢大家的指导,很有帮助。
现在新的问题是:中文名在写在前,英文名在后,要求依然是英文名的前两个单词是斜体。
难度加大了很多吗?例子如下:

艾胶算盘子 Clochidion lanceolarium (Roxb.) Voigt
飘拂草 Fimbristylis fusca (Nees) Benth.
。。。
所需效果如下:
艾胶算盘子 Clochidion lanceolarium (Roxb.) Voigt
飘拂草 Fimbristylis fusca (Nees) Benth
.....
谢谢

TA的精华主题

TA的得分主题

发表于 2011-12-8 09:26 | 显示全部楼层
可试试如下代码:
  1. Sub test()
  2.     Application.ScreenUpdating = False
  3.     With ActiveDocument.Content.Find
  4.         .Text = "[A-Za-z]@^32[a-z]@^32\("
  5.         .MatchWildcards = True
  6.         Do While .Execute
  7.             With .Parent
  8.                 .End = .End - 2
  9.                 .Font.Italic = True
  10.                 .Collapse wdCollapseEnd
  11.             End With
  12.         Loop
  13.     End With
  14.     Application.ScreenUpdating = True
  15. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-8 14:57 | 显示全部楼层
谢谢7楼,但不是每个植物的第二个单词后都以括号开头的,例如:
淡黄荚迷 Viburnum lutescens Bl.
滴水珠 Pinellia cordata N. E. Brown
吊裙草 Crotalaria retusa L.
请问还有什么办法吗?例如介于第一个空格与第三个空格之间的格式设置为斜体?
谢谢大家

TA的精华主题

TA的得分主题

发表于 2011-12-8 15:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-12-8 17:42 | 显示全部楼层
例如介于第一个空格与第三个空格之间的格式设置为斜体?

如果就这样的要求,可试试如下简单一点的代码:
  1. Sub test2()
  2.     Application.ScreenUpdating = False
  3.     With ActiveDocument.Content.Find
  4.         .Text = "[A-Za-z]@^32[a-z]{1,}"
  5.         .MatchWildcards = True
  6.         .Replacement.Font.Italic = True
  7.         .Execute Replace:=wdReplaceAll
  8.     End With
  9.     Application.ScreenUpdating = True
  10. End Sub
复制代码
如果要复杂一点的,可试试:
  1. Sub test3()
  2.     Application.ScreenUpdating = False
  3.     With ActiveDocument.Content.Find
  4.         .Text = "[一-龥][^13^32][A-Za-z]@^32[a-z]{1,}"
  5.         .MatchWildcards = True
  6.         Do While .Execute
  7.             With .Parent
  8.                 .Start = .Start + 2
  9.                 .Font.Italic = True
  10.                 .Collapse wdCollapseEnd
  11.             End With
  12.         Loop
  13.     End With
  14.     Application.ScreenUpdating = True
  15. End Sub
复制代码
代码通常要针对具体的文档来写的,否则很容易导致处理不当。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-10 23:57 , Processed in 0.024431 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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