繁体   English   中英

VBA Worksheet_Change(ByVal Target As Range)

[英]VBA Worksheet_Change(ByVal Target As Range)

我正在尝试通过字符串更改变量的值,但它不允许,例如,当我在下拉列表中选择 2 时,我希望出现 2/2 但出现 1

    Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
    
    selectedNa = Target.Value
    If Target.Column = 2 Then
        selectedNum = Application.VLookup(selectedNa, Worksheets("Descrição").Range("ClassVEE"), 2, False)
        If Not IsError(selectedNum) Then
            Target.Value = selectedNum
        End If
    End If

在此处输入图片说明

尝试

Target.Value = "'" & selectedNum

每当您在Worksheet_Change事件中更改单元格值时,您都需要禁用事件。 否则更改单元格值将触发另一个Worksheet_Change事件,这将触发另一个……

也可以将2/2解释为日期(取决于本地化设置)。 因此,通过将.NumberFormat设置为文本,确保 Excel 将其作为文本。

Private Sub Worksheet_Change(ByVal Target As Range)
    'Updateby Extendoffice
     
    If Target.Column = 2 Then
        selectedNum = Application.VLookup(Target.Value, Worksheets("Descrição").Range("ClassVEE"), 2, False)
        If Not IsError(selectedNum) Then
            Application.EnableEvents = False  ' make sure you don't run into an endless loop
            Target.NumberFormat = "@"   ' ensure 2/2 does not get interpreted as date or something odd.
            Target.Value = selectedNum
            Application.EnableEvents = True
        End If
    End If
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM