当单元格值更改时,我试图在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本身分配给按钮,它会返回正确的值,但是当将其插入到此工作表更改中时,它只会返回错误。
任何帮助都将非常感谢。
答案 0 :(得分:1)
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
答案 1 :(得分:0)
就是这样!谢谢 :) 我已将代码更改为:
<?php
return array(
...,
'log' => 'log.txt',
...
);