【发布时间】:2021-03-25 19:12:48
【问题描述】:
我一直无法让它工作。我的意图是有一个我可以调用的宏,它将在用户运行它时仅从选定的单元格中清除字符“:”的最后一个实例之前的所有数据。我有一个类似版本的宏,它可以成功地修剪选定的单元格,但是我尝试运行的这个新公式会在公式行上不断调试运行时错误并且不明白为什么。
我试图在所有选定单元格上运行的公式的原始版本是 "=IF(ISERR(FIND(":",A6)),IF(LEN(A6)=0,"", A6),RIGHT(A6,LEN(A6)-FIND("",SUBSTITUTE(A6,":","",LEN(A6)-LEN(SUBSTITUTE(A6,":", “”))))))”,我发现它是有用的。但是,我将 A6 单元格引用替换为我认为是下面示例中选择的特定单元格的变量引用。
'Sub Sample_Evaluate()
Dim rng As Range
Dim Area As Range
'Weed out any formulas from selection
If Selection.Cells.Count = 1 Then
Set rng = Selection
Else
Set rng = Selection.SpecialCells(xlCellTypeConstants)
End If
'Trim and Clean cell values
For Each Area In rng.Areas
Area.Value = _
Evaluate("=IF(ISERR(FIND("":""," & Area.Address & ")),IF(LEN(" & Area.Address & ")=0,""""," & Area.Address & "),RIGHT(" & Area.Address & ",LEN(" & Area.Address & ")-FIND(""*"",SUBSTITUTE(" & Area.Address & ","":"",""*"",LEN(" & Area.Address & ")-LEN(SUBSTITUTE(" & Area.Address & ","":"",""""))))))")
Next area
End Sub
任何帮助将不胜感激。我个人不想这样做,但它是我的前任留下的代码,所以让它工作比让它以“正确”的方式工作更重要。我预计将来必须为不同的公式解决这个问题。是否有一种方法或功能可以使用我不知道的可变公式来做到这一点?
【问题讨论】:
标签: excel vba excel-formula