0

Is there a way to add code to the LostFocus event of the cells in a sheet?

I want to add code to keep the first 50 characters of the cell that loses the focus:

If Len(ActiveCell.FormulaR1C1) > 50 Then
    ActiveCell.FormulaR1C1 = Left$(ActiveCell.FormulaR1C1, 47) + "..."
End If
4

2 回答 2

1

没有失去焦点事件。试试这个

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 个字符。如果需要,可以将其更改为将公式转换为其截断结果。

另请注意,这对多单元格选择的处理效果不佳。在这方面,您必须仔细考虑您的用例。

于 2013-06-20T07:40:01.550 回答
1
Private Sub Workbook_SheetSelectionChange(ByVal Sheet As Object, ByVal Target As Range)

End Sub

使用它你也可以看到你改变了什么,如果你保留一个变量,它改变了什么,你应该能够轻松地跟踪它

于 2013-06-20T07:40:17.033 回答