Vba #使用if/then和.value时的值

Vba #使用if/then和.value时的值,vba,excel,Vba,Excel,我正在编写一个vba函数来检查一个单元格的名称,如果它匹配,则返回另一个单元格中的值。由于我还是vba新手,我仍然在硬编码大多数变量以简化事情。不知何故,我的职能中最简单的一步就是让我失望 我尝试了两种将值写入单元格的方法,但都不起作用。两者都在单元格A2中返回一个#值 Function getRole(lastName As String, firstName as String) As String if (lastName = Worksheets("Sheet1").Range("A1

我正在编写一个vba函数来检查一个单元格的名称,如果它匹配,则返回另一个单元格中的值。由于我还是vba新手,我仍然在硬编码大多数变量以简化事情。不知何故,我的职能中最简单的一步就是让我失望

我尝试了两种将值写入单元格的方法,但都不起作用。两者都在单元格A2中返回一个#值

Function getRole(lastName As String, firstName as String) As String

if (lastName = Worksheets("Sheet1").Range("A1").Value Then
    Worksheets("Sheet1").Range("A2").Value = "YES"
    'Alternate method
    'Worksheets("Sheet1").Range("A2").Select
    'ActiveCell.Text = "YES"
Else: 
    Worksheets("Sheet1").Range("A2").Value = "NO"
    'Alternate method
    'Worksheets("Sheet1").Range("A2").Select
    'ActiveCell.Text = "NO"
End If

End Function

如果要编写自定义项,则需要将代码修改为类似于以下代码的内容:

Function getRole(lastName As String, firstName As String) As String

If lastName = Worksheets("Sheet1").Range("A1").Value Then
    getRole = "YES"
Else
    getRole = "NO"
End If

End Function
从工作表单元格调用自定义项的方式:


如果您希望编写一个UDF,则需要将代码修改为类似于以下代码的内容:

Function getRole(lastName As String, firstName As String) As String

If lastName = Worksheets("Sheet1").Range("A1").Value Then
    getRole = "YES"
Else
    getRole = "NO"
End If

End Function
从工作表单元格调用自定义项的方式:


您的代码已更正语法:-

Function getRole(lastName As String, firstName as String) As String
    if lastName = Worksheets("Sheet1").Range("A1").Value Then
        Worksheets("Sheet1").Range("A2").Value = "YES"
    ElseIf Worksheets("Sheet1").Range("A2").Value = "NO" Then
        getRole = Worksheets("Sheet1").Range("A1").Value 
End If End Function

您的代码已更正语法:-

Function getRole(lastName As String, firstName as String) As String
    if lastName = Worksheets("Sheet1").Range("A1").Value Then
        Worksheets("Sheet1").Range("A2").Value = "YES"
    ElseIf Worksheets("Sheet1").Range("A2").Value = "NO" Then
        getRole = Worksheets("Sheet1").Range("A1").Value 
End If End Function

这应该对你有用

Function getRole(lastName As String, firstName As String) As String

If lastName = Sheet1.Range("A1").Value Then
    Sheet1.Range("A2") = "YES"
    'Alternate method
    'Worksheets("Sheet1").Range("A2").Select
    'ActiveCell.Text = "YES"
Else
    Sheet1.Range("A2") = "NO"
    'Alternate method
    'Worksheets("Sheet1").Range("A2").Select
    'ActiveCell.Text = "NO"
End If

End Function

这应该对你有用

Function getRole(lastName As String, firstName As String) As String

If lastName = Sheet1.Range("A1").Value Then
    Sheet1.Range("A2") = "YES"
    'Alternate method
    'Worksheets("Sheet1").Range("A2").Select
    'ActiveCell.Text = "YES"
Else
    Sheet1.Range("A2") = "NO"
    'Alternate method
    'Worksheets("Sheet1").Range("A2").Select
    'ActiveCell.Text = "NO"
End If

End Function

你想写一个UDF吗?从Excel工作表调用的函数?或者这是一个常规的
子项
?其中是
lastname
之前的
)的右括号(lastname=工作表(“Sheet1”)。范围(“A1”).Value-Then
这是一个自定义项。我没有意识到你可以直接给自定义项赋值,下面Shai Rado给出的答案是有效的!你是想写一个自定义项?一个从Excel工作表调用的函数?还是这是一个常规的
?如果(lastName=Worksheets(“Sheet1”).Range(“A1”).Value然后它是一个自定义项。我不知道你可以直接给自定义项赋值,下面的答案来自Shai Rado Worksheets(“Sheet1”)。Range(“A2”).Value=“YES”
应该是
getRole=“YES”
?我试图演示如何将单元格值分配给变量。您的答案最好地解释了OP抱怨的#值错误。
工作表(“Sheet1”)。范围(“A2”)。value=“YES”
应该是
getRole=“YES”
?我试图演示如何将单元格值分配给变量。您的回答最好地解释了OP抱怨的#值错误。