【问题标题】:How to Trim Headings in a table with VBA code如何使用 VBA 代码修剪表格中的标题
【发布时间】:2019-07-09 09:59:35
【问题描述】:

我正在尝试使用 VBA 代码修剪表格的标题,因为其中一些前面的空格每个月都不同,这使得编码变得困难。

当我分解代码并逐步运行它时,它工作正常,但是当我运行整个宏时,它会删除我的一些标题并将它们替换为来自不同工作表行的信息,或者只是“第 1 列”、“列2"等。

我相信我在调用 (" & .Address & ") 选择时遗漏了一些代码参考?

它正在替换单元格处于活动状态的工作表中的标题。 (如果它是在运行宏之前单击的最后一个单元格)。

我试过只使用 Trim 函数,但是因为它是范围的数组,所以它不起作用,有人建议使用“evaluate "函数。

我也尝试将 trim 函数用作 WorksheetFunction,但它给了我一个错误“运行时错误 13”类型不匹配“。这是在以下代码中:

    With wsDispoData.ListObjects("Table_DispoData").HeaderRowRange.EntireRow
        .Value = WorksheetFunction.Trim(.Value)
    End With

这是我正在使用的当前代码替换错误。

Trim headings
    With wsDispoData.ListObjects("Table_DispoData").HeaderRowRange.EntireRow
        .Value = Evaluate("IF(ISTEXT(" & .Address & "),TRIM(" & .Address & "),REPT(" & .Address & ",1))")
    End With

预期的结果应该是例如:

当前标题:“SOH”和“Compo”

修剪:“SOH”和“Compo”

【问题讨论】:

  • 不太确定但试试:.Address(ColumnAbsolute:=False)
  • 您的代码对我有用...您确定这些实际上是空格而不是不可打印的字符吗?
  • @SiddharthRout 它们绝对是空格。如上所述,代码可以独立运行,或者如果我在中断中运行宏,但如果我运行整个长宏则不行。我已经通过更新编辑了我的问题。似乎它正在用选择的单元格和工作表替换标题。
  • 在这种情况下,我需要查看完整的宏。您可能会在代码中的某处重置范围
  • @Simone Fick 是的,这是一个快速而错误的建议。认真对待:通过省略整个行的类型不匹配是正确的,因为 headerrowrange 返回一个范围,而不是一个字符串。所以你可以试试For Each c in wsDispoData.ListObjects("Table_DispoData").HeaderRowRange: c.Value = Trim(c.Value) : Next

标签: excel vba trim tableheader


【解决方案1】:

我只会枚举标题行并检查每个值

Dim Cell As Range
For Each Cell In wsDispoData.ListObjects("Table_DispoData").HeaderRowRange
    Cell.value = WorksheetFunction.Trim(Cell.value)
Next Cell

【讨论】:

  • 谢谢,答案与“AcsErno”相同。完美运行。
猜你喜欢
  • 2013-03-13
  • 2016-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
相关资源
最近更新 更多