【问题标题】:Excel VBA - Detecting cell borders or alternate solutionsExcel VBA - 检测单元格边框或替代解决方案
【发布时间】:2015-05-08 21:23:43
【问题描述】:

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

背景

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

问题

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

"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) 的一部分,或者它们是否是整个新行桌子。我能想到的唯一方法是识别单元格边界(因为嵌套表的格式是从 word 继承的)并编写一百万个嵌套的“if 子句”来确定单元格需要在哪里添加它们的值。

【问题讨论】:

    标签: excel ms-word logic border vba


    【解决方案1】:

    我做到了

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 2011-04-13
      • 2016-10-24
      相关资源
      最近更新 更多