使用IFERROR时,宏文件和标准之间的单元锁定的差异(VLOOKUP)

时间:2017-03-16 00:59:57

标签: excel-vba vba excel

在Col C中输入一个帐号,vlookup表使用

获取Col D的成员名称
=IFERROR(VLOOKUP(C4,MembersAndIDList,2,FALSE),""). 

代码工作正常,除非使用的类型为Col C,并按下删除键,因为这将删除公式。该配方用于Col D中的所有细胞 使用Excel 2010 - 我可以锁定Vlookup列以防止在xlsx文件上无意中过度键入,但锁定对xlsm文件不起作用。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

将此代码粘贴到用户应输入会员编号的工作表的代码模块中。

  

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rng As Range
Dim Member As String

Set Rng = Range("MembersAndIDList")
With Target
    If .Row < 2 Then Exit Sub                       ' exclude first row at the top

    If .Column = 3 Then                             ' Column 3 = "C"
        Application.EnableEvents = False
        On Error Resume Next
        Member = WorksheetFunction.VLookup(.Value, Rng, 2, False)
        If Err Then
            MsgBox "Please enter a valid member number", _
                   vbExclamation, "Invalid entry"
            .Value = ""
            .Select
        Else
            Cells(.Row, 4).Value = Member           ' column 4 = "D"
        End If
        Application.EnableEvents = True
    End If
End With
     

End Sub

你可以修改Row&lt; 2排除更多标题行,更改列表名称或消息文本,当然还有列C和D,但是您需要继续在工作簿上使用工作表函数,这些工作表不支持宏,因此可以'有这个代码。