首页 > 解决方案 > VBA EXCEL无限循环 - 修改单元格时更改单元格的值

问题描述

我在 excel VBA 中遇到问题,我想执行以下操作:

如果用户输入某个字符串,我希望将该字符串修改为大写,然后根据单元格所在的列添加小写“j”或“n”(jour 或 nuit - 法语中的白天或夜晚)

问题是当我修改单元格的值时,因为它随后被宏修改,宏被再次调用,并且一遍又一遍地发生......

这是我的代码:


Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    'On Error GoTo done
    Set KeyCells = Range("T41:KC66")

    If Not Application.Intersect(KeyCells, Target) Is Nothing Then
        Dim ens As Range
        Dim cel As Range
        Set ens = Target.Cells
        Dim valeur As String
        'MsgBox "boo"
        valeur = UCase(ens(1, 1))
        For Each cel In ens
            Select Case valeur
                Case "R", "RJ", "RN"
                    If ActiveSheet.Cells(40, cel.Column) = "J" Then
                        cel.Value = "Rj"
                    Else
                        cel.Value = "Rn"
                    End If
                Case ...
                    ...
                    ...
                    
           End Select
       Next cel
    End If
End Sub

我也有其他案例,但只需要一个即可显示问题。

你们有什么解决方法吗??谢谢!:)

标签: excelvbafor-loopinfinite-loop

解决方案


推荐阅读