ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] Word VBA如何把所有表格设置为三线图?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-4-10 12:42 | 显示全部楼层 |阅读模式
我用录制宏得到了“把选中表格设置为三线表的代码”
可是不知道怎么用循环把每一个都进行相同的设置~
求大礼帮忙解答一下~
下面是我录制宏得到的代码

Sub 单个三线图()
    ' 三线表格式设置
    Selection.Borders(wdBorderTop).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderVertical).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
    Selection.Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone

'    上边框1.5磅
    Options.DefaultBorderLineWidth = wdLineWidth150pt
    With Selection.Borders(wdBorderTop)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With

'    上边框1.5磅
    Options.DefaultBorderLineWidth = wdLineWidth150pt
    With Selection.Borders(wdBorderBottom)
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With

'    中间边框0.5磅
    Options.DefaultBorderLineWidth = wdLineWidth050pt
    With Selection.Rows(1).Borders(wdBorderBottom) '第一行的底边框
        .LineStyle = Options.DefaultBorderLineStyle
        .LineWidth = Options.DefaultBorderLineWidth
        .Color = Options.DefaultBorderColor
    End With

End Sub

TA的精华主题

TA的得分主题

发表于 2020-4-10 15:15 | 显示全部楼层
论坛里面搜一下,应该有例子。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-4-10 17:26 | 显示全部楼层
ming0018 发表于 2020-4-10 15:15
论坛里面搜一下,应该有例子。

我乱搞了一下,一起出Bug,这样成功了,
谢谢大神的回复呀~
不知道这代码怎么写能够简便一点呢~


  1. Sub 表格自动三线表()
  2.     Dim t As Table
  3.     For Each t In ActiveDocument.Tables
  4.         With t
  5.             '去除所有边框
  6.             .Borders(wdBorderTop).LineStyle = wdLineStyleNone
  7.             .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
  8.             .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
  9.             .Borders(wdBorderRight).LineStyle = wdLineStyleNone
  10.             .Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone
  11.             .Borders(wdBorderVertical).LineStyle = wdLineStyleNone
  12.             .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
  13.             .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
  14.                
  15.             '设置上下边框
  16.             Options.DefaultBorderLineWidth = wdLineWidth150pt
  17.             .Borders(wdBorderTop).LineStyle = Options.DefaultBorderLineStyle
  18.             .Borders(wdBorderTop).LineWidth = Options.DefaultBorderLineWidth
  19.             .Borders(wdBorderTop).Color = Options.DefaultBorderColor
  20.             
  21.             .Borders(wdBorderBottom).LineStyle = Options.DefaultBorderLineStyle
  22.             .Borders(wdBorderBottom).LineWidth = Options.DefaultBorderLineWidth
  23.             .Borders(wdBorderBottom).Color = Options.DefaultBorderColor

  24. '            设置中间边框
  25.             Options.DefaultBorderLineWidth = wdLineWidth050pt
  26.             .Cell(1, 1).Select
  27.             With Selection
  28.                 .SelectRow
  29.                 .Borders(wdBorderBottom).LineStyle = Options.DefaultBorderLineStyle
  30.                 .Borders(wdBorderBottom).LineWidth = Options.DefaultBorderLineWidth
  31.                 .Borders(wdBorderBottom).Color = Options.DefaultBorderColor
  32.             End With
  33.        End With
  34.     Next
  35. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-4-10 17:42 | 显示全部楼层
Yorphone 发表于 2020-4-10 17:26
我乱搞了一下,一起出Bug,这样成功了,
谢谢大神的回复呀~
不知道这代码怎么写能够简便一点呢~

使用range对象,不要用selection对象就行了。

TA的精华主题

TA的得分主题

发表于 2020-4-10 21:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
可以试试利用表格样式来设置,如:
  1. Sub test()
  2.     Dim aTable As Table
  3.    
  4.     Application.ScreenUpdating = False
  5.     With ActiveDocument.Styles("简明型 1").Table.Condition(wdFirstRow)
  6.         With .Borders(wdBorderTop)
  7.             .LineStyle = wdLineStyleSingle
  8.             .LineWidth = wdLineWidth150pt
  9.         End With
  10.         With .Borders(wdBorderBottom)
  11.             .LineStyle = wdLineStyleSingle
  12.             .LineWidth = wdLineWidth050pt
  13.         End With
  14.     End With
  15.     With ActiveDocument.Styles("简明型 1").Table.Condition(wdLastRow)
  16.         .Borders(wdBorderTop).LineStyle = wdLineStyleNone
  17.         With .Borders(wdBorderBottom)
  18.             .LineStyle = wdLineStyleSingle
  19.             .LineWidth = wdLineWidth150pt
  20.         End With
  21.     End With
  22.     For Each aTable In ActiveDocument.Tables
  23.         aTable.Style = "简明型 1"
  24.     Next
  25.     Application.ScreenUpdating = True
  26. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-4-11 00:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
sylun 发表于 2020-4-10 21:28
可以试试利用表格样式来设置,如:

好的,太感谢大神啦~我来试试

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-4-11 00:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sylun 发表于 2020-4-10 21:28
可以试试利用表格样式来设置,如:

哇,我看懂了,真的简便好多!!我太感谢了~

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-4-11 00:08 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-4-11 08:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我也写一个,使用Sylun老师的"简明型 1"表格样式。
Sub d()
Rem word三线表表格样式
    Dim aTable As Table
    Application.ScreenUpdating = False
    '整体表格边框线设置
    With ActiveDocument.Styles("简明型 1").Table.Borders
        .OutsideLineStyle = False
        .InsideLineStyle = False
    End With
    With ActiveDocument.Styles("简明型 1").Table.Borders(wdBorderBottom)
        .LineStyle = wdLineStyleSingle
        .LineWidth = wdLineWidth150pt
    End With
    '标题行边框线设置
    With ActiveDocument.Styles("简明型 1").Table.Condition(wdFirstRow)
        With .Borders(wdBorderTop)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth150pt
        End With
        With .Borders(wdBorderBottom)
            .LineStyle = wdLineStyleSingle
            .LineWidth = wdLineWidth050pt
            .Color = wdColorAutomatic
        End With
    End With
    '汇总行边框线设置
    With ActiveDocument.Styles("简明型 1").Table.Condition(wdLastRow).Borders(wdBorderBottom)
        .LineStyle = wdLineStyleSingle
        .LineWidth = wdLineWidth050pt
    End With
    For Each aTable In ActiveDocument.Tables
        aTable.Style = "简明型 1"
    Next
   Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

发表于 2020-4-11 09:15 | 显示全部楼层
本帖最后由 cuanju 于 2020-4-11 09:16 编辑
Yorphone 发表于 2020-4-10 17:26
我乱搞了一下,一起出Bug,这样成功了,
谢谢大神的回复呀~
不知道这代码怎么写能够简便一点呢~


        .Cell(1, 1).Select
        With Selection
            .SelectRow
           '…………………………………………
        End With
=============================
其实这几句代码非常巧妙,如果表格标题行占据2行的,可以选中这2行作为标题行,非常智能(因为很多表格的标题行不一定是第1行)。


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

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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