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

Excel VBA - Detecting cell borders or alternate solutions

我有一个逻辑问题,我认为处理它的唯一方法是检测单元格边界。在 Excel VBA 中有没有办法做到这一点?

背景

我正在做一个将 Word table 粘贴到 excel sheet 的项目。但是,我发现 Word table 中的换行符将文本分成单独的单元格并合并在一起。 VBA 不喜欢合并的单元格,所以我添加了一行代码来取消合并 sheet 中的所有单元格。结果是 Word table 中的一些单元格分布在多个单元格中,到处添加新行。我一直在编写 VBA 代码,使用 Word 文档中的一行“ID”列键作为标记来将实际的 table 单元格分开。

问题

当我将一个 table 与 嵌套在一个单元格中的另一个 table 粘贴时,它会添加与内部 [=43] 相对应的数字列和行=].我还不能添加图片,所以我会在这里画出来(抱歉)。每一行都是一个新行。

"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

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

table

之前的单元格文本

Table (1,1) 内容 Table (1,2) 内容

Table (2,1) 内容 Table (2,2) 内容

table

之后的单元格文本

等等...

我无法确定“问题文本 1”和“问题文本 2”最初是由换行符分隔的 (1,1) 和 (1,2) 的一部分,还是它们是全新的table 中的行。我能想到的唯一方法是识别单元格边界,(因为嵌套 table 的格式是从 word 继承的)并写一百万个嵌套的“if 子句”来识别单元格需要在何处添加它们的值.

我用

做到了
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