ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]如何“高级”合并单元格(总结于29楼)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-11-28 06:00 | 显示全部楼层

        Application.ScreenUpdating = True    '恢复屏幕更新
    End With
    Exit Sub
myClew:
    MsgBox msgPrompt, msgStyle, msgTitle
    Exit Sub
ErrHandle:
    Application.ScreenUpdating = True    '
恢复屏幕更新
    With Err
        msgPrompt = "Word
出现不可预测错误,导致此错误的可能原因是:"
        msgPrompt = msgPrompt & .Description
        msgPrompt = "
错误号
:" & .Number & vbCrLf
        .Clear
    End With
    msgStyle = vbCritical + vbOKOnly
    MsgBox msgPrompt, msgStyle, msgTitle
End Sub
'----------------------
Private Sub Document_Open()
    cmdAddNew
    Me.Saved = True
End Sub
'----------------------

Private Sub myCombxA_Change(ByVal Ctrl As Office.CommandBarComboBox)
'
注意,可直接在组合中键入某连接符即可

    Dim myString As String
    Select Case myCombxA.Text
    Case "
行无缝连接"
        Call myMerge(1, "")
    Case "
行加空格连接
"
        Call myMerge(1, "
 
")
    Case "
行加破折号连接
"
        Call myMerge(1, "——")
    Case "
行加其他连接
"
        myString = VBA.InputBox(prompt:="
请设置行合并时的连接符
", Title:=msgTitle, Default:="*")
        Call myMerge(1, myString)
    Case Else
        Call myMerge(1, myCombxA.Text)
    End Select
End Sub
'----------------------


TA的精华主题

TA的得分主题

发表于 2006-11-28 06:01 | 显示全部楼层

Private Sub myCombxB_Change(ByVal Ctrl As Office.CommandBarComboBox)
'
注意,可直接在组合中键入某连接符即可
    Dim myString As String
    Select Case myCombxB.Text
    Case "
列无缝连接"
        Call myMerge(2, "")
    Case "
列加空格连接"
        Call myMerge(2, "
 ")
    Case "
列加破折号连接"
        Call myMerge(2, "——")
    Case "
列加其他连接"
        myString = VBA.InputBox(prompt:="
请设置列合并时的连接符", Title:=msgTitle, Default:="*")
        Call myMerge(2, myString)
    Case Else
        Call myMerge(2, myCombxB.Text)
    End Select
End Sub
'----------------------

 

UjJaVapx.rar (32.73 KB, 下载次数: 20)

TA的精华主题

TA的得分主题

发表于 2006-11-28 12:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

何兄看看这个代码是否满足你的要求?
即如底纹的下拉式菜单的效果。

    Dim mycontrol As CommandBarPopup
    Dim mybutton As CommandBarButton
   
   With Application
        .CustomizationContext = ActiveDocument '作用于本文档
         Set mycontrol = Application.CommandBars("standard").Controls.Add(Type:=msoControlPopup, Before:=5) '要添加到的菜单项
        With mycontrol
            .Caption = "新要求!"  '要显示的文字
        Set mybutton = .Controls.Add(Type:=msoControlButton)  '添加按钮
             With mybutton '对按钮进行设置
                .Caption = "偶数行" '要显示的文字
                .OnAction = "one"  '对应运行的宏
             End With
         Set mybutton = .Controls.Add(Type:=msoControlButton)   '添加按钮
             With mybutton  '对按钮进行设置
                .Caption = "奇数行" '要显示的文字
                .OnAction = "two" '对应运行的宏
             End With
         '接着复制上行的五行,再 改成你所需要的。
        End With
  End With
End Sub
Sub one()
    '此处复制以前的代码
    MsgBox "one"
End Sub
Sub two()
    '此处复制以前的代码
    MsgBox "two"
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-11-28 13:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

对老大第二版合并单元格宏测试的报告

谢谢老大再三为小弟修枝裁叶!老大好几楼的代码,每每让小弟心惊魄动——老大极忙,却一路护送小弟于泥泞羊肠道上,还把雨靴让给小弟穿,自己打着赤脚,却对小弟说:“慢慢来,别急!小心路滑!”

一、老大的关爱:

老大这次又全照着小弟的“忽发奇想”(这是老大编程时最忌讳的)重新写了一次合并单元格编码,用起来很是亲切顺手!

老大还特别在“行加其他连接”、“列加其他连接”里设了一个默认的连接符“*”,细心如此!

二、小弟的歉疚:

仍然是小弟的表述有问题——

其实,这两个按钮不应该是像“字体”“字号”按钮一样的,它们应该像“突出显示”“字体颜色”或者绘图工具栏上的“线型”“填充颜色”按钮一样,下拉箭头是为着“设置默认效果”,而在工具栏上的按钮功能等同于普通按钮,一点按钮,马上执行命令。如下图的说明:


三、疑问:

对老大两个版本的编码,小弟测试得仍然不够细心,敢问一下老大:

老大的编码中是否对小弟的“宏一”“宏二”进行了编程?即小弟要让两个单元格合并之后,内容的连接处是一个段落标记,如何实现?是不是在“其他连接符”里设置?如何设置?

老大已经深受小弟的“没头没脑”“丢三落四”之荼毒,小弟今又如此反反复复,胸中愧怍,无颜面对!

奈何老大究竟是老大,小弟有了哪怕再小的问题,老大自然躲不过!呵呵!老大恕罪! 

[求助]如何“高级”合并单元格(1)

[求助]如何“高级”合并单元格(1)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-11-28 13:53 | 显示全部楼层

暂无法领会孔兄类似底纹按钮妙处

QUOTE:
以下是引用konggs在2006-11-28 12:47:54的发言:

何兄看看这个代码是否满足你的要求?
即如底纹的下拉式菜单的效果。

…………

 Sub one()
    '此处复制以前的代码
    MsgBox "one"
End Sub
Sub two()
    '此处复制以前的代码
    MsgBox "two"
End Sub

呵呵,先鞠个躬!孔兄又牺牲了午间时间了!想来应该是能够解决小弟的问题了!

小弟对VBA实在有点摸不着门,刚才粗浅尝试,无法把孔兄的代码与以前的完美结合,弄不出个所以然来。只好先来告诉一声,回头再好好“猜猜”!(小弟今天大概要晚上十点才能上网)

TA的精华主题

TA的得分主题

发表于 2006-11-28 19:20 | 显示全部楼层

是我不对, 我以为何兄的VBA已经入门了.

qrug5msY.rar (16 KB, 下载次数: 32)


TA的精华主题

TA的得分主题

 楼主| 发表于 2006-11-28 23:30 | 显示全部楼层

对孔兄“新要求!”按钮测试的报告

谢谢孔兄对小弟的“宽宏大量”!小弟还真期盼哪一天能够入门,能够自己洗衣服、做饭,而不是天天需要孔兄帮小弟系钮扣、绑鞋带……呵呵,期待那么样的一天:小弟可以为孔兄炒几个色香味俱全的小菜,和孔兄在巨石顶上看漫天晚霞,举杯慢酌,共谈VBA往事!

以下为测试报告:

孔兄新宏使用步骤A需要把两行进行合并,点“新要求”按钮,弹出下拉框,这时,再于下拉框中用鼠标单击“偶数行”,则实现了两行的合并。但“新要求”按钮的名称未变。

小弟的想法:鼠标于下拉框中单击了“偶数行”之后,按钮的名称就不再是“新要求!”而是变成了“偶数行”。同时,“暗地里”,这个按钮被赋予了“进行两行合并”的功能。以后它就变成了“偶数行”命令的专用按钮。

 

孔兄新宏使用步骤B需要在另一个区域进行两行合并,点孔兄的“新要求!”按钮,并不会执行命令,只是弹出下拉框。仍然得像步骤A一样,鼠标单击下拉框中的“偶数行”才能把两行合并成一行。

孔兄新宏使用步骤C同于步骤B

小弟的想法:应该是一点按钮,便执行命令,把两行合并成一行。不需要再出现下拉框。

如果需要改变按钮的“默认”功能的话,那么,才需要点按钮右端的下拉箭头以出现下拉框,再用鼠标单击下拉框中的“偶数列”,让工具栏上的按钮成为“偶数列”的专用宏,以后一点按钮,马上执行“将两列合并”的命令。

 

总结:孔兄这次设计的其实是“菜单”,等于是一点Word界面中的“文件”按钮,便出现了“下拉框”——新建、打开、关闭、保存、另存为……我们平常使用了“新建”功能后,菜单按钮的名称并未变成“新建”。

小弟想要的是“普通命令按钮”,即一点这个按钮,便能完成相应的命令(把两行合并成一行或把两列合并成一列);但这个按钮又具备了“变脸”的功能——只要一点下拉框中的某项,那么,按钮的名称马上变成了这项的名称,同时,按钮便具备了这项命令的功能。

一句话,小弟要的其实是像“字体颜色”(或“突出显示”“线型”“填充颜色”)一样的能够“变脸”的按钮(不是菜单)。唯一与“字体颜色”按钮不同的是,“字体颜色”按钮显示的是某种颜色小方块,而小弟设想的按钮显示的是文字条——也就是体积上比“字体颜色”按钮来得大一些。

 

注意:“字体颜色”按钮比较特殊,按钮与下拉箭头其实是“分离”的,点按钮便执行命令把选定的字改了颜色;点下拉箭头则弹出下拉框,鼠标单击下拉框中的某种新颜色,便是把选定文字的颜色改为这种新颜色,同时,“重新默认按钮具备的功能”,把按钮上显示的内容更换成了这种新颜色,以后只要点按钮,便能把任何文字改成这种新颜色。

 

呵呵,小弟每次都是表述乏力,让孔兄绕的圈子越来越大,小弟实在不知怎么说才好!杂七杂八扯了以上这些,请孔兄狠批!

[求助]如何“高级”合并单元格(1)

[求助]如何“高级”合并单元格(1)

TA的精华主题

TA的得分主题

发表于 2006-11-29 06:30 | 显示全部楼层
QUOTE:
其实,这两个按钮不应该是像“字体”“字号”按钮一样的,它们应该像“突出显示”“字体颜色”或者绘图工具栏上的“线型”“填充颜色”按钮一样,下拉箭头是为着“设置默认效果”,而在工具栏上的按钮功能等同于普通按钮,一点按钮,马上执行命令。如下图的说明:

三、疑问:

对老大两个版本的编码,小弟测试得仍然不够细心,敢问一下老大:

老大的编码中是否对小弟的“宏一”“宏二”进行了编程?即小弟要让两个单元格合并之后,内容的连接处是一个段落标记,如何实现?是不是在“其他连接符”里设置?如何设置?

 

两大高手围着你转啊,你“艳”福不浅啊。

本贴我作最后一次陈述。

第一个问题,你所需要的VBA行列合并已经完成,只是界面上的问题,首先无关大碍,如果你愿意,可以搜索以前的贴子,关于OFFICE中开发工具栏的问题,即如字体颜色等命令(msoControlSplitButtonPopup类型),不支持开发的,常见的还有如可以双击的格式刷、绘图工具(直线、矩形)等,我们目前还无法做到。(目前论坛的搜索功能有些乱,很多旧贴子都搜索不到了)。

 第二个问题,修正了一下(其实按说你可以很方便地改代码,以我为)

QkP8E7yR.rar (33.69 KB, 下载次数: 35)

第三个问题,默认“*”,只是提示你可以键入而已,没有其他意思,可直接在组合框中键入任意多个分隔(连接)符。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-11-29 09:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

“高级”合并单元格问题总结

QUOTE:
以下是引用守柔在2006-11-29 6:30:22的发言:

两大高手围着你转啊,你“艳”福不浅啊。

…………

 第二个问题,修正了一下(其实按说你可以很方便地改代码,以我为)

…………

呵呵,岂只是这一次啊!小弟在家园里“诞生”的时候,接生的便是孔兄,此后小弟总爱问“为什么”,都是老大和孔兄来细心引导,就怕小弟走弯路、走岔道,就怕小弟要急着用,老大和孔兄手里有再多的事情,也都放一边,为了小弟可谓没日没夜“全天候”付出了!

看看整个家园,其实来到Word版块的兄弟们最有福气,有问题都能得到老大与孔兄的亲自教导,可以一个问题一个问题解决清楚,兄弟们都“‘艳’福不浅”!而小弟,则是最幸福的一个,翻开小弟的主题帖(多是问帖),十几楼二十几楼三四五六十楼,全是老大与孔兄灵气四射的代码,自来“人间”,小弟得“二老”太多恩泽!——呵呵,某种角度说,小弟也是“最无耻”的一个,竟然把老大与孔兄的衣角拉住死死不放!

让老大与孔兄失望的是,哪怕老大与孔兄在编程代码中作了极为细致的说明,直到现在小弟连最基本的VBA知识都不具备——Word界两大顶尖高手,如此栽培小弟,小弟还是成天耽于“玄想”,不知道尝试着练习VBA,一则见出“二老”的疼爱超乎任何势利之想,二则见出小弟的“朽木不可雕”,小弟是应该好好面壁三年反思一下了!

 

以下对这个问帖粗略总结——

一、得到两个经典解决方案:

1、孔兄在6楼的编程。

这个编程可以经过机械拓展(使用者不需要再自创编码),从孔兄提供的两个“母宏”生成八个“子宏”,需要的时候,可以直接从“工具→自定义→命令→宏”里把八个宏中的一些宏拖放到工具栏上使用。

其中,对于合并后原来两个单元格内容连接处的“连接符”,除了已提供的空格、破折号两个宏之外,使用者可以直接于这两个宏编码里把空格、破折号改为其他符号。当然,也可以复制编码重新设一个宏。

2、老大在28楼的编程。

这个编程的经典处,在于界面的设计——工具栏上的两个按钮,集成了八个常用的宏,还集成了“连接符拓展”功能,使用者只要点“行加其他连接”或“列加其他连接”,便能够设置两个单元格合并后它们内容相接处的连接符。

二、其他解决方案:

1、孔兄在14楼的编程。

与老大在28楼的编程类似,仅少了“连接符拓展”功能的集成。但这可以由使用者很方便地在编码中修改。

2、孔兄在26楼的编程。

孔兄这个编程的作用是,将所有八个宏(例中只给出两个“母宏”,使用者可以像上边所述一样进行八个子宏的拓展)都放在了菜单中。使用者可以像使用“表格”菜单一样使用它。

 

三、使用注意事项:

1、不支持不连续区域的合并;

2、对老大28楼、孔兄14楼的编程,第一次使用了某个命令进行合并后,这个命令名便会出现在按钮上,紧接着第二次要使用这个命令时,只要在按钮的名称框里点一下鼠标,再按回车键就可执行命令,不需要再点下拉框选择(当然,点下拉框来选择命令也行,看各人使用习惯)。

3、老大的编程中“行合并”指的同一行之中(即横向),左右相邻两列进行合并(老大也称之为“横向合并”);孔兄的编码与小弟的阐述中,“行合并”指的是同一列之中,上下相邻两行合并。

 

谢谢老大、孔兄又为小弟一个问题花了这许多时间、精力!家园里,老大孔兄长年这样付出极不简单!每次,总让小弟激动不已!

小弟找不到更好的词汇来述说心中感激,只好给“二老”各敬上一杯苦中有甜的咖啡清清神!

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

本版积分规则

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

GMT+8, 2024-11-17 06:54 , Processed in 0.038321 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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