Excel VBA - 检测单元格边框或替代解决方案

时间:2015-05-08 21:23:43

标签: excel-vba ms-word logic border vba

我遇到了逻辑问题,我认为处理它的唯一方法是检测细胞边界。有没有办法在Excel VBA中执行此操作?

背景

我正在开发一个将Word表格粘贴到Excel工作表中的项目。但是,我发现Word表中的换行符将文本分成合并在一起的单独单元格。 VBA不喜欢合并的单元格,所以我添加了一行代码来取消合并工作表中的所有单元格。结果是来自Word表格的一些单元格已遍布多个单元格,在此处和那里添加新行。我一直在编写VBA代码,使用一行" ID"将分离的单元格合并为一个单元格。 Word文档中的列键作为标记来分割实际表格单元格。

问题

当我粘贴一个嵌套在单元格中的另一个表的表时,它会添加与该内部表对应的数字列和行。我还无法添加图片,所以我会在这里画出来(对不起)。每个单独的行都是一个新行。

"Header1"                    l    "No Header"            l   "Header2"
"Cell text prior to table"   l    "(blank)"              l
"Table (1,1) text"           l    "Table (1,2) text"     l
 Problem text 1              l    Problem text 2         l
"Table (2,1) text"           l    "Table (2,2) text"     l
"Cell text after table"      l    "(blank)"              l

编辑:我应该澄清我希望合并的单元格显示

表格之前的单元格文本

表(1,1)内容 表(1,2)内容

表(2,1)内容 表(2,2)内容

表格后的单元格文本

等等...

我无法确定是否"问题文本1"和"问题文本2"最初是(1,1)和(1,2)的一部分由换行符分隔,或者如果它们是表中的整个新行。我能想到的唯一方法是识别单元格边框(因为嵌套表格的格式是从单词转移)并写入一百万个嵌套" if子句"确定细胞需要添加其值的位置。

1 个答案:

答案 0 :(得分:0)

我用

做到了
If RCon.Offset(columnOffset:=-1).Borders(xlEdgeBottom).LineStyle <> xlNone Then
ElseIf RCon.Offset(columnOffset:=-1).Borders(xlEdgeBottom).LineStyle = xlNone Then
       For Each RCon2 In .Range(.Cells(RCon.Offset(1).Row, CCount.Offset(columnOffset:=-1).Column), .Cells(.Cells(Rows.count, CCount.Offset(columnOffset:=-1).Column).End(xlUp).Row, CCount.Offset(columnOffset:=-1).Column))
              If RCon2.Borders(xlEdgeBottom).LineStyle <> xlNone Then
                    If RCon2.Value <> "" And RCon2.Value <> 0 Then
                          RCon.Offset(columnOffset:=-1).Value = RCon.Offset(columnOffset:=-1).Value & vbNewLine & RCon2.Value
                          RCon2.ClearContents
                    End If
                    Exit For
              ElseIf RCon2.Borders(xlEdgeBottom).LineStyle = xlNone And RCon2.Value <> "" And RCon2.Value <> 0 Then
                    RCon.Offset(columnOffset:=-1).Value = RCon.Offset(columnOffset:=-1).Value & vbNewLine & RCon2.Value
                    RCon2.ClearContents
              End If
       Next RCon2
End If