excel中关于合并单元格的VBA代码
问题1:A2是合并的单元,由A2:A3组成如何获取A2:A3这组地址A5是合并的单元如何获取A5:A7这组地址问题2:给一段代码,可以,把合并的单元格自动拆分,并且填入原...
问题1:
A2是合并的单元,由A2:A3组成
如何获取A2:A3这组地址
A5是合并的单元
如何获取A5:A7这组地址
问题2:
给一段代码,可以,把合并的单元格自动拆分,并且填入原来的数据.
谢谢. 展开
A2是合并的单元,由A2:A3组成
如何获取A2:A3这组地址
A5是合并的单元
如何获取A5:A7这组地址
问题2:
给一段代码,可以,把合并的单元格自动拆分,并且填入原来的数据.
谢谢. 展开
5个回答
2015-10-13 · 知道合伙人软件行家
关注
展开全部
合并单元格的名称是合并单元格范围左上角单元格的名称,在VBA中没有特别代码。
例如:A2:D5是合并单元格,将文本框TextBox1的值赋给合并单元格代码为:
Range("a2").Value = TextBox1
举例:
VBA一定可以,不过你没说清楚 a1和b1合并,c1和c2合并 然后a2和b2....... 后面是寸 C2和C3吗?C2已经和C1合并了
是 A1&B1 C1&C2 A2&B2 A3&B3 C3&C4 A4&B4
Sub Macro2()
'
' Macro2 Macro
'
Dim X As Integer, Y As Integer
X = 10 '你要合并多少列 2 是ABCD 5 是ABCDEFGHIJ合并
Y = 30 '多少行
For J = 1 To Y: For I = 1 To X: Range(Cells(J, I + I - 1), Cells(J, I + I)).MergeCells = True: Next I, J
End Sub
例如:A2:D5是合并单元格,将文本框TextBox1的值赋给合并单元格代码为:
Range("a2").Value = TextBox1
举例:
VBA一定可以,不过你没说清楚 a1和b1合并,c1和c2合并 然后a2和b2....... 后面是寸 C2和C3吗?C2已经和C1合并了
是 A1&B1 C1&C2 A2&B2 A3&B3 C3&C4 A4&B4
Sub Macro2()
'
' Macro2 Macro
'
Dim X As Integer, Y As Integer
X = 10 '你要合并多少列 2 是ABCD 5 是ABCDEFGHIJ合并
Y = 30 '多少行
For J = 1 To Y: For I = 1 To X: Range(Cells(J, I + I - 1), Cells(J, I + I)).MergeCells = True: Next I, J
End Sub
展开全部
问题1:在VBA可以用Range.MergeArea得到其合并区域,举例,用下面语句,可以和得到A2对应的合并区域,最后R的结果为A2:A3,即R.Address="$A$2:$A$3"
Dim R As Range
Set R = Range("A2").MergeArea
问题2:下面的程序,将A13单元格的合并取消,并且将对应区域每一单元格都赋值为A13的值。供参考。
Sub MyUnmerge()
Dim R As Range, Rm As Range
Set R = Range("A13")
Set Rm = R.MergeArea
R.UnMerge
Rm.Value = R.Value
End Sub
请看是否是你需要的功能。
Dim R As Range
Set R = Range("A2").MergeArea
问题2:下面的程序,将A13单元格的合并取消,并且将对应区域每一单元格都赋值为A13的值。供参考。
Sub MyUnmerge()
Dim R As Range, Rm As Range
Set R = Range("A13")
Set Rm = R.MergeArea
R.UnMerge
Rm.Value = R.Value
End Sub
请看是否是你需要的功能。
追问
谢谢你的分析
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Sub xxx()
If Range("a1").MergeArea.Count <> 1 Then '判断是否为合并单元格
Set ran = Range("a1").MergeArea
ran.UnMerge
ran.FormulaR1C1 = Range("a1").Value
End If
End Sub
Range("a1").MergeArea即返回合并单元格包含的区域,后面带取消合并和填入相同值,你要怎么循环看你自己怎么写了 ,要获得地址,用address属性
If Range("a1").MergeArea.Count <> 1 Then '判断是否为合并单元格
Set ran = Range("a1").MergeArea
ran.UnMerge
ran.FormulaR1C1 = Range("a1").Value
End If
End Sub
Range("a1").MergeArea即返回合并单元格包含的区域,后面带取消合并和填入相同值,你要怎么循环看你自己怎么写了 ,要获得地址,用address属性
追问
感谢你给出的参考,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
选中A列------ 撤销合并单元格(即点击合并单元格按钮) ---选中A列有数据范围 -F5----定位条件--空值---- 依次按 = 向上方向键 ctrl+enter
复制A列 右键--- 选择性粘贴--数值
复制A列 右键--- 选择性粘贴--数值
追问
第一个问题,如果合并单元格是连续的,可以那样操作.中间隔了一个A15,那样操作是不可以的.
另外两个操作都希望用VBA完成
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
问题1:
Sub MyMerge()
For i = 2 To 100
Set cel = Range("A" & i)
If cel.MergeCells Then
MsgBox cel.Address(0, 0) & ":A" & cel.MergeArea.Rows.Count + i - 1 & "为合并单元格"
i = i + cel.MergeArea.Rows.Count - 1
End If
Next
End Sub
问题2:
Sub MyUnMerge()
For i = 2 To 100
Set cel = Range("A" & i)
If cel.MergeCells Then
k = cel.MergeArea.Rows.Count - 1
Range(cel.Address(0, 0) & ":A" & cel.MergeArea.Rows.Count + i - 1).UnMerge
For j = 1 To k
cel.Offset(j, 0) = cel
Next
i = i + cel.MergeArea.Rows.Count - 1
End If
Next
End Sub
Sub MyMerge()
For i = 2 To 100
Set cel = Range("A" & i)
If cel.MergeCells Then
MsgBox cel.Address(0, 0) & ":A" & cel.MergeArea.Rows.Count + i - 1 & "为合并单元格"
i = i + cel.MergeArea.Rows.Count - 1
End If
Next
End Sub
问题2:
Sub MyUnMerge()
For i = 2 To 100
Set cel = Range("A" & i)
If cel.MergeCells Then
k = cel.MergeArea.Rows.Count - 1
Range(cel.Address(0, 0) & ":A" & cel.MergeArea.Rows.Count + i - 1).UnMerge
For j = 1 To k
cel.Offset(j, 0) = cel
Next
i = i + cel.MergeArea.Rows.Count - 1
End If
Next
End Sub
更多追问追答
追问
你好,第一段代码正常运行,
第2段代码出现错误
应用程序定义,或对象定义错误
Range(cel.Address(0, 0) & ":A" & cel.MergeArea.Rows.Count + i - 1).UnMerge
请再帮忙分析一下.
追答
在我这里没有问题。如果你有百度HI客户端,可以将文件传给我看看。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询