我正在编写一个vba函数来检查一个单元格的名称,如果匹配,则返回另一个单元格中的值。由于我还是vba的新手,我仍然在硬编码大多数变量以简化操作。不知何故,我功能中最简单的一步就是让我失望。
我尝试了两种将值写入单元格的方法,但都不起作用。两者都返回单元格A2中的#VALUE。
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
答案 0 :(得分:0)
如果您要编写 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
从工作表的单元格中调用 UDF 的方式:
答案 1 :(得分:0)
您的代码已针对语法进行了更正: -
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
答案 2 :(得分:0)
这对你有用......
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