Excel:如何将代码添加到单元格的丢失焦点事件?

时间:2013-06-20 07:16:14

标签: excel-vba vba excel

有没有办法将代码添加到工作表中单元格的 LostFocus 事件中?

我想添加代码以保留失去焦点的单元格的前50个字符:

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

2 个答案:

答案 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

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