gpt4 book ai didi

excel - Vlookup 上的单元格变化

转载 作者:行者123 更新时间:2023-12-04 22:32:40 25 4
gpt4 key购买 nike

当单元格值更改时,我正在尝试在 VBA 中执行 Vlookup,根据已更改的单元格查找值。

目前我有:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("Frametype")) Is Nothing Then

On Error GoTo MyErrorHandler:

Range("Framewidth").Value = Application.WorksheetFunction.VLookup(Sheets("Frame Info").Range("FrameType"), Sheets("Frame Info").Range("FrameTable"), 7, False)

MyErrorHandler:
If Err.Number = 1004 Then
Range("Framewidth").Value = "error"
End If
End If
End Sub

我尝试将 VBA VLOOKUP 单独分配给一个按钮,它返回正确的值,但是当它插入到此工作表更改中时,它只返回错误。

任何帮助都会非常感谢。

最佳答案

1004错误可能来自这里:
If Not Intersect(Target, Range("Frametype")) Is Nothing Then
如果 Range("Frametype")不在代码所在的工作表上。然后 Target不能相交,它会引发错误。根据您要执行的操作,更改 Intersect()对此行:
If Not Intersect(Target, Range([Frametype].Address)) Is Nothing Then
使用 Worksheet_Change 时事件,最好禁用事件,否则代码可能会进入循环。

另一个最佳实践想法是在 Error Handler 之前退出。 , 如果可以的话 Exit Sub :

Private Sub Worksheet_Change(ByVal Target As Range)

On Error GoTo MyErrorHandler:
Application.EnableEvents = False

If Not Intersect(Target, Range([Frametype].Address)) Is Nothing Then
'If Not Intersect(Target, Range("Frametype")) Is Nothing Then
With Worksheets("Frame Info")
Range("Framewidth").Value = Application.WorksheetFunction.VLookup(.Range("FrameType"), _
.Range("FrameTable"), 7, False)
End With
End If

Application.EnableEvents = True
Exit Sub

MyErrorHandler:
If Err.Number = 1004 Then Range("Framewidth").Value = "error"
Application.EnableEvents = True

End Sub

关于excel - Vlookup 上的单元格变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51668828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com