ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 有合并单元格的表格,用vba 向右插入列发生突出现象,该怎么办?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-11-9 13:12 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
代码入下:EX1为原来的表格,运行代码后,想变成ex2的结果,可是却成了Ex3的结果。
应该怎么修改代码,才能成为 EX3的结果?谢谢
Code:
Sub test()
     Dim p As Long
     Dim tb As Table
      Set tb = ActiveDocument.Tables(1)
        tb.Cell(1, 1).Select
       p = Selection.Information(wdMaximumNumberOfColumns)
       tb.Cell(1, p).Select
        Selection.InsertColumnsRight
End Sub


QQ图片20201109131133.png
QQ图片20201109131147.png
QQ图片20201109131158.png

TA的精华主题

TA的得分主题

发表于 2020-11-10 10:46 | 显示全部楼层
手动插入表格不是很方便吗?



    We meet by chance like patches of drifting duckweed,  
    May everything be fine with you everyday !
      (你我萍水相逢,愿君一切安好!)

    TA的精华主题

    TA的得分主题

     楼主| 发表于 2020-11-11 11:22 | 显示全部楼层

    TA的精华主题

    TA的得分主题

    发表于 2020-11-11 12:08 | 显示全部楼层
    参考一下这个试试:https://www.it1352.com/1648042.html



      We meet by chance like patches of drifting duckweed,  
      May everything be fine with you everyday !
        (你我萍水相逢,愿君一切安好!)

      TA的精华主题

      TA的得分主题

       楼主| 发表于 2020-11-14 10:21 | 显示全部楼层
      I think out it, code is:
      自己想出了,算是一种算法吧,但不是最好的。
      Sub Atest()
      Dim t As Table, r As Long, p As Long, cw As Single
      Set t = ActiveDocument.Tables(1)
      t.Cell(1, 1).Select                                     'select table fisrt cell
      p = Selection.Information(wdMaximumNumberOfColumns)    'get current  column Count
      t.Cell(1, p).Select                                     'select table fisrt rows,last cell
      cw = t.Cell(1, p).Width                                ' first row,last cell width
      q = Selection.Information(wdMaximumNumberOfRows)          ''get current row Count
      For r = 1 To q
        t.Cell(r, 1).Select
        p = Selection.Information(wdMaximumNumberOfColumns)       ' some row include merge cell ,so every rows need get it column count
        t.Cell(r, p).Select
        Selection.Next(Unit:=wdWord, Count:=1).Select              'move cursor outside of every row's last cell
        Selection.InsertCells (0)                                   'so,at this time ,inert a cell of last cell right side,
        t.Cell(r, p + 1).SetWidth ColumnWidth:=cw, RulerStyle:=3     '0 means:wdInsertCellsShiftRight
      Next r                                                         ' every insert cell set  a same column width
            

      TA的精华主题

      TA的得分主题

      发表于 2020-11-14 16:10 | 显示全部楼层
      1. Sub test()
      2.     Dim p As Long
      3.     Dim tb As Table
      4.     Set tb = ActiveDocument.Tables(1)
      5.     tb.Cell(1, 1).Select
      6.     p = Selection.Information(wdMaximumNumberOfColumns)
      7.     tb.Cell(1, p).Select
      8.     Application.CommandBars.FindControl(ID:=3687).Execute
      9. End Sub
      复制代码


      评分

      2

      查看全部评分

      TA的精华主题

      TA的得分主题

       楼主| 发表于 2020-11-15 10:30 | 显示全部楼层

      TA的精华主题

      TA的得分主题

       楼主| 发表于 2020-11-15 10:33 | 显示全部楼层
      感谢QQ214189912,坚定了我继续学习vba的决心
      您需要登录后才可以回帖 登录 | 免费注册

      本版积分规则

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

      GMT+8, 2024-11-24 03:26 , Processed in 0.035329 second(s), 14 queries , Gzip On, MemCache On.

      Powered by Discuz! X3.4

      © 1999-2023 Wooffice Inc.

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

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

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