EXCEL中如何用VBA判断某一地址单元格是否为合并单元格.doc_第1页
EXCEL中如何用VBA判断某一地址单元格是否为合并单元格.doc_第2页
EXCEL中如何用VBA判断某一地址单元格是否为合并单元格.doc_第3页
EXCEL中如何用VBA判断某一地址单元格是否为合并单元格.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EXCEL中如何用VBA判断某一地址单元格是否为合并单元格?如果是,则其为几列几行合并而成? 最佳答案 Sub myMerge()Set cel = Range(A1)If cel.MergeCells Then MsgBox cel.Address(0, 0) & 为合并单元格, & 共有 & cel.MergeArea.Rows.Count & 行 & cel.MergeArea.Columns.Count & 列组成End Sub1、判断单元格区域是否存在合并单元格Range对象的MergeCells属性可以确定单元格区域是否包含合并单元格,如果该属性返回值为True,则表示区域包含合并单元格。下面的代码判断单元格 A1是否包含合并单元格,并显示相应的提示信息。 1. Sub IsMergeCell()2. If Range(A1).MergeCells = True Then3. MsgBox 包含合并单元格4. Else5. MsgBox 没有包含合并单元格6. End If7. End Sub复制代码如果在指定区域中存在部分合并的单元格,如图 1所示,区域E8:I17中包含合并单元格区域F8:G9,H12:I13。判断这样一个单元格区域中是否包含合并单元格,可以使用下面的代码快速判断单元格区域中是否包含部分合并单元格,而不需要遍历单元格。图 1 包含部分合并单元格的区域 1. Sub IsMerge()2. If IsNull(Range(E8:I17).MergeCells) Then3. MsgBox 包含合并单元格4. Else5. MsgBox 没有包含合并单元格6. End If7. End Sub复制代码代码解析:当单元格区域中同时包含合并单元格和非合并单元格时,MergeCells属性将返回Null,因此第2行代码通过该返回结果作为判断条件。运行IsMerge过程结果如图 15 2所示。图 2 提示信息2、合并单元格时连接每个单元格的文本使用Excel的“合并及居中”按钮合并多个单元格区域时,Excel仅保留区域左上角单元格的内容,如果用户希望在合并如图 15 3所示单元格区域时,将各个单元格的内容连接起来保存在合并后的单元格区域中,则可以使用下面的代码。图 3 合并前单元格区域 1. Sub Mergerng()2. Dim StrMerge As String3. Dim rng As Range4. If TypeName(Selection) = Range Then5. For Each rng In Selection6. StrMerge = StrMerge & rng.Value7. Next8. Application.DisplayAlerts = False9. Selection.Merge10. Selection.Value = StrMerge11. Application.DisplayAlerts = True12. End If13. End Sub复制代码代码解析:Mergerng过程将所选各个单元格的内容连接起来保存在合并后的单元格区域中。第4行代码使用TypeName函数判断当前选定对象是否为Range对象,若是则继续执行代码。第5行到第7行代码将当前选中区域的内容连接起来保存在字符串变量StrMerge中。第8行代码将DisplayAlerts属性设置为False,禁止在合并多重数值区域时,Excel显示的警告信息,如图 4所示,以避免中断代码的运行。图 4 合并多重数值区域时警告信息第9行代码使用Merge方法合并当前选定区域。应用于Range对象的Merge方法通过指定Range对象创建合并单元格,语法如下:expression.Merge(Across)参数expression是必需的,返回一个Range对象。参数Across是可选的,如果该值为True,则将指定区域内的每一行合并为一个合并单元格。默认值为False。第9行也可以使用下面的代码:Selection.MergeCells = True第10行代码将变量StrMerge的值赋给合并后的单元格。运行Mergerng过程结果如图 5所示。图 5 合并单元格结果3、合并内容相同的连续单元格如果需要合并如图 6所示的工作表中B列中部门相同的连续单元格,可以使用下面的代码。图 6 需合并的工作表 1. Sub Mergerng()2. Dim IntRow As Integer3. Dim i As Integer4. Application.DisplayAlerts = False5. With Sheet16. IntRow = .Range(A65536).End(xlUp).Row7. For i = IntRow To 2 Step -18. If .Cells(i, 2).Value = .Cells(i - 1, 2).Value Then9. .Range(.Cells(i - 1, 2), .Cells(i, 2).Merge10. End If11. Next12. End With13. Application.DisplayAlerts = True14. End Sub复制代码代码解析:第7行到第11行代码,从最后一行开始,向上逐个单元格判断连续两个单元格的内容是否相同,如果相同则合并。运行Mergerng过程后,结果如图 7所示。图 7 合并内容相同的连续单元格4、取消合并单元格时在每个单元格中保留内容如果需要取消如图 7所示的工作表中B列“部门”的合并单元格,并且各个单元格均保留原合并单元格的内容,可以使用下面的代码。 1. Sub UnMerge()2. Dim StrMer As String3. Dim IntCot As Integer4. Dim i As Integer5. With Sheet16. For i = 2 To .Range(B65536).End(xlUp).Row7. StrMer = .Cells(i, 2).Value8. IntCot = .Cells(i, 2).MergeArea.Count9. .Cells(i, 2).UnMerge10. .Range(.Cells(i, 2), .Cells(i + IntCot - 1, 2).Value = StrMer11. i = i + IntCot - 112. Next13. End With14. End Sub复制代码代码解析:UnMerge过程取消工作表中B列中的合并单元格,并且各个单元格均保留原合并单元格的内容。第7行代码取得B列每个合并单元格的内容。第8行代码取得合并区域的单元格数量。第9行代码使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论