有没有办法将代码添加到工作表中单元格的 LostFocus 事件中?
我想添加代码以保留失去焦点的单元格的前50个字符:
If Len(ActiveCell.FormulaR1C1) > 50 Then
ActiveCell.FormulaR1C1 = Left$(ActiveCell.FormulaR1C1, 47) + "..."
End If
答案 0 :(得分:1)
没有 Lost Focus 事件。试试这个
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static OldRange As Range
If Not OldRange Is Nothing Then
If Not OldRange.HasFormula Then
If Len(OldRange.Value) > 50 Then
OldRange.Value = Left$(OldRange.Value, 47) + "..."
End If
End If
End If
Set OldRange = Target.Cells(1, 1)
End Sub
注意,我认为您不想使用FormulaR1C1
,因为如果您碰巧有一个公式,其自身的公式超过50个字符,那么发布的代码会将无效的公式放入单元格。我发布的内容忽略了公式,即使它们返回的结果超过50个字符。如果需要,可以将其更改为将公式转换为截断结果。
另请注意,这会很难处理多单元格选择。在这方面,您必须仔细考虑您的用例。
答案 1 :(得分:1)
Private Sub Workbook_SheetSelectionChange(ByVal Sheet As Object, ByVal Target As Range)
End Sub
使用它你也可以看到你改变了什么,如果你保留一个变量,你应该能够轻松跟踪它