ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 怎么用VBA实现这个功能

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-4-2 15:39 | 显示全部楼层 |阅读模式
请帮我一下,要处理大量同类型的练习题,我想做一个半自动的VBA功能来辅助
360截图16450704525876.png

求助.zip

10.07 KB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2020-4-2 16:04 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-4-2 21:13 | 显示全部楼层
本帖最后由 乐乐2006201505 于 2020-4-2 22:40 编辑

看看是否是你想要的。
Sub AA提取红色字体数据代码()  '出处:http://www.dzwebs.net/2876.html
  'word中某颜色字代码出处:http://www.dzwebs.net/2876.html
'    Set docNew = Documents.Add
'    Set tblnew = docNew.Table.Add(slection.Range, 3, 5)
  Dim b() As Boolean, arr()
  单词数 = 3
  ReDim arr(单词数 - 1)
  ReDim b(单词数 - 1) '取数标志
  Dim x As Integer, y As Integer
  Randomize
  For i = 0 To 单词数 - 1
    Do '找到x的位置,y表示x在取数标志数组的位置
      x = Int(Rnd * (单词数 - 1 + 1)) + 1
      y = x - 1
    Loop While b(y)
    b(y) = True
    arr(i) = x '找到未取的数,并放入数组,设置标志位
  Next i

  With ActiveDocument
  Selection.HomeKey Unit:=wdStory
  Selection.MoveDown Unit:=wdLine, Count:=1 '将光标下移一行
  Selection.InsertAfter vbCr
  Set tblnew = .Tables.Add(Selection.Range, NumRows:=1, _
      NumColumns:=单词数)
    With Selection.Find
      .Parent.HomeKey Unit:=wdStory
      .ClearFormatting
      .Font.Color = wdColorRed
      Do While .Execute
        j = j + 1
        tblnew.Cell(1, arr(j - 1)) = .Parent
        a = Round((Len(.Parent) * 1.5), 0)
        Selection.Font.Underline = wdUnderlineSingle
        Selection.Font.UnderlineColor = -587137025
        Selection.TypeText Text:=Space(a)
      Loop
    End With
    With tblnew
      '设置外边框
      .Borders(wdBorderLeft).LineStyle = wdLineStyleThinThickMedGap
      .Borders(wdBorderLeft).LineWidth = wdLineWidth225pt
      .Borders(wdBorderRight).LineStyle = wdLineStyleThickThinMedGap
      .Borders(wdBorderRight).LineWidth = wdLineWidth225pt
      .Borders(wdBorderTop).LineStyle = wdLineStyleThinThickMedGap
      .Borders(wdBorderTop).LineWidth = wdLineWidth225pt
      .Borders(wdBorderBottom).LineStyle = wdLineStyleThickThinMedGap
      .Borders(wdBorderBottom).LineWidth = wdLineWidth225pt
      '设置内边框
      With .Borders
        .InsideLineStyle = wdLineStyleSingle
        .InsideLineWidth = wdLineWidth100pt
        .InsideColor = wdColorblank 'White
      End With
      '自动调整表格
      .Columns.PreferredWidthType = wdPreferredWidthAuto
      .AutoFitBehavior (wdAutoFitContent) '根据内容调整表格
'      .AutoFitBehavior (wdAutoFitWindow) '根据窗口调整表格
      With .Range
        With .Font '字体格式
          .Name = "宋体"
          .Name = "Times New Roman"
          .Color = wdColorAutomatic '自动字体颜色
          .Size = 12
          .Kerning = 0
          .DisableCharacterSpaceGrid = True
        End With
        With .ParagraphFormat '段落格式
          .CharacterUnitFirstLineIndent = 0 '取消首行缩进
          .FirstLineIndent = CentimetersToPoints(0) '取消首行缩进
          .LineSpacingRule = wdLineSpaceSingle '单倍行距  wdLineSpaceExactly '行距固定值
          '.LineSpacing = 20 '设置行间距为20磅,配合行距固定值
          .Alignment = wdAlignParagraphCenter '单元格水平居中
          .AutoAdjustRightIndent = False
          .DisableLineHeightGrid = True
        End With
        .Cells.VerticalAlignment = wdCellAlignVerticalCenter  '单元格垂直居中
      End With
    End With
  End With
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-4-3 00:09 | 显示全部楼层
乐乐2006201505 发表于 2020-4-2 21:13
看看是否是你想要的。
Sub AA提取红色字体数据代码()  '出处:http://www.dzwebs.net/2876.html
  'word ...

谢谢,明天我测试下
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 12:01 , Processed in 0.041907 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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