Foxtable(狐表)用户栏目专家坐堂 → 请教取消合并单元格


  共有4471人关注过本帖树形打印复制链接

主题:请教取消合并单元格

帅哥哟,离线,有人找我吗?
大红袍
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/5 22:43:00 [显示全部帖子]

mark 取消合并

 

Dim tb As Table = CurrentTable
Dim a As  Integer = tb.TopRow
Dim b As  Integer = tb.LeftCol
Dim c As  Integer = tb.BottomRow+1
Dim d As  Integer = tb.RightCol+1


Dim rng As New List(of Object)
tb.Grid.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom
For Each r As object In tb.Grid.MergedRanges
    If a <= r.TopRow AndAlso b <= r.LeftCol AndAlso c >= r.bottomRow AndAlso d >= r.rightCol Then
        rng.add(r)
    End If
Next
For Each r As object In rng
    tb.Grid.MergedRanges.Remove(r)
next


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/5 23:34:00 [显示全部帖子]

什么意思,执行什么代码,合并单元格不行?

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/5 23:49:00 [显示全部帖子]

你的代码,只是取消你框选的单元格的合并啊。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/6 9:26:00 [显示全部帖子]

以下是引用hbhb在2015/11/5 23:58:00的发言:
就这个意思,第一步,框选区域合并,比如select(1,1,2,2),合并后编辑录入。以后,发现该单元格的合并要取消,第二步再框选它,取消合并。
如果select(1,1,1,2)的情况下,就不行了?

 

肯定不行啊,必须框选全部。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/6 9:40:00 [显示全部帖子]

不可能不行,例子说明。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/6 10:35:00 [显示全部帖子]

以下是引用hbhb在2015/11/6 10:35:00的发言:
谢谢!
测试无数遍了,就是当框选的区域大于合并的单元格时,取消合并准确无误。如果框选的区域正好等于合并区域时,有时就不灵了?

 

不可能,做例子上来啊


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/11/6 11:04:00 [显示全部帖子]

Dim tb2 As WinForm.Table = e.Form.Controls("Table2")
Dim tb As Table = tb2.Table

Dim a As  Integer = tb.TopRow+1
Dim b As  Integer = tb.LeftCol+1
Dim c As  Integer = tb.BottomRow+1
Dim d As  Integer = tb.RightCol+1
'msgbox(a & b & c & d)
Dim rng As New List(of Object)
tb.Grid.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom
For Each r As object In tb.Grid.MergedRanges
    'msgbox(r.Toprow & r.leftcol & r.bottomrow & r.rightcol)
    If a >= r.TopRow AndAlso b >= r.LeftCol AndAlso c <= r.bottomRow AndAlso d <= r.rightCol OrElse a <= r.TopRow AndAlso b <= r.LeftCol AndAlso c >= r.bottomRow AndAlso d >= r.rightCol Then
        rng.add(r)
    End If
Next
For Each r As object In rng
    tb.Grid.MergedRanges.Remove(r)
Next


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/4 21:51:00 [显示全部帖子]

看17、18楼。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/4 21:57:00 [显示全部帖子]

我用17、18楼测试,没问题。


 回到顶部