【发布时间】:2018-01-04 16:38:14
【问题描述】:
我想标题很清楚。我尝试了以下解决方案,但没有成功。
我的函数适用于 Strings,但不适用于 cells。
任何线索都非常受欢迎。
Function nbLeadingSpaces(str As Variant) As Integer
Dim trimmed As String
trimmed = LTrim(str)
'works with strings, not with cells
nbLeadingSpaces = InStr(1, str, Left(trimmed, 1), vbTextCompare) - 1
'same issue
'nbLeadingSpaces = Len(str) - Len(LTrim(str))
End Function
我需要这个来根据一种 文本大纲 做一些事情,如果一行是 主行 或 ,前导空格的数量将显示>子行(几个级别)。 VBA 似乎会自动修剪单元格内容 8-/
编辑
对不起,我很愚蠢(至少有时是这样)。这些单元格前面没有空格,而是缩进 :-)
问题解决了,我可以得到rng.IndentLevel,就是这样。
无论如何,您的所有评论都帮助我重新分析了这个问题,我会留下这个问题,这可能会帮助另一天失去理智:-)
【问题讨论】:
-
试试
trimmed = Application.WorksheetFunction.Trim(str) -
@ScottCraner 当 VBA 忽略前导空格(当它们来自单元格时)时,这有什么帮助?您尝试过这个建议吗?
-
nbLeadingSpaces = Len(str) - Len(LTrim(str))在我将其用作 UDF 时按预期为我工作。你是如何尝试使用你的函数的? -
@JohnColeman 处理字符串或单元?这就是问题
-
当您说“文本大纲”时,您的意思是每个条件格式都会将空格添加到单元格的值中吗?