在VBA中设置单元格的值(为什么我的代码不起作用)

时间:2017-12-14 17:02:49

标签: excel-vba vba excel

我正在使用代码

hood.Offset(0, 2).Value = hoodName

引擎罩被声明为范围。构成引擎盖的单元格返回#VALUE错误,我尝试设置的单元格没有返回任何内容。为什么?!?!?!?!?我做错了什么?

好的,所以这里还有一些代码:

Function NhoodCheck(rXY As Range) As String
Dim hoodName As String
Dim hood As Range
Set hood = rXY.Cells(1, 2) 
If OHC(rXY) = True Then
 hoodName = "Ohio City"
End If
Set hood.Offset(0, 2).Value = hoodName
End Function

基本思想是函数被调用并传递一个范围(rXY),然后调用一个布尔函数作为if语句的一部分。如果返回true,则将hoodname设置为邻域的名称。如果它是假的话,它会执行其他检查。所有这些都在确定一个地方所在的邻域。然后它返回邻域的第一部分,但是名称是一个更大的区域并且进入调用该函数的单元格旁边的单元格中(因此偏移)。第一部分是正确的。它只是没有设置偏移单元格的值。在这种情况下,我希望一些细胞说“俄亥俄城”。

1 个答案:

答案 0 :(得分:-1)

试试这样:

hood.Offset(0, 2).Value = "hoodName"

没有" VBA认为hoodName是变量。

试试这段代码:

Option Explicit
Sub TestMe()        
    Dim hood As Range        
    Set hood = Range("D4")
    hood.Offset(0, 2).Value = hoodName    
End Sub

它将返回错误,因为hoodName是一个变量,并且由于Option Explicit的存在而应声明一个变量。如果您删除Option Explicit,代码就会生效,因为VBA会认为hoodName是一个变量,它等于""