合并单元格的名称是合并单元格范围左上角单元格的名称,在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
问题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
请看是否是你需要的功能。
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属性
选中A列------ 撤销合并单元格(即点击合并单元格按钮) ---选中A列有数据范围 -F5----定位条件--空值---- 依次按 = 向上方向键 ctrl+enter
复制A列 右键--- 选择性粘贴--数值
问题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