Excel VBA中的细胞修饰功能

Excel VBA中的细胞修饰功能,excel,vba,Excel,Vba,我在VBA中迈出了第一步,我正在尝试创建一个函数,允许我在满足if语句的某些条件时将单元格的值更改为假值 这就是我目前所拥有的 Function active_users(cad_desde As Date, cad_fin As Date, last_log As Date, creacion As Date, per_desde As Date, per_fin As Date, download As Date, bloq As Integer) Dim result As String

我在VBA中迈出了第一步,我正在尝试创建一个函数,允许我在满足if语句的某些条件时将单元格的值更改为假值

这就是我目前所拥有的

Function active_users(cad_desde As Date, cad_fin As Date, last_log As Date, creacion As Date, per_desde As Date, per_fin As Date, download As Date, bloq As Integer)

Dim result As String
result = "False"

If bloq = 0 Or bloq = 128 Then
    If cad_fin < per_desde And last_log < per_desde Then
        Range("P3").Value = "False"
    ElseIf cad_fin >= per_desde And cad_fin <= download And download <= per_fin And last_log < per_desde Then
        Range("P3").Value = "False"
    End If
End If

End Function
当我执行函数时,我得到一个值!如果我做了一个错误检查,它会告诉我公式中使用的一个值类型是不正确的,但是应该注意的是,只有当我添加行范围P3时才会发生这种情况。值=False。否则将执行该函数,尽管在单元格中没有给出除0以外的任何结果

谢谢

当我们需要从函数中获取值时,使用函数,如果没有要检索的值,那么最好使用子例程

我将您的函数更改为返回布尔值,如果满足条件,该值将为False。我正在更新调用函数的Sub上的RangeP3

所以它看起来像这样

Option Explicit
Sub Change_Cell_To_False()

Dim result As String
result = active_users("4/1/2019", "4/1/2019", "4/15/2019", "4/1/2019", " 4/20/2019", "4/20/2019", "4/21/2019", 0)

If result = False Then
ActiveSheet.Range("P3") = "False"
End If

End Sub

Private Function active_users(ByVal cad_desde As Date, ByVal cad_fin As Date, ByVal last_log As Date, ByVal creacion As Date, ByVal per_desde As Date, ByVal per_fin As Date, ByVal download As Date, ByValbloq As Integer) As Boolean

If bloq = 0 Or bloq = 128 Then
    If cad_fin < per_desde And last_log < per_desde Then
        active_users = False
    ElseIf cad_fin >= per_desde And cad_fin <= download And download <= per_fin And last_log < per_desde Then
        active_users = False
    Else
        active_users = True
    End If
End If

End Function


将结果写入固定单元格的函数有什么用?此外,您还应该完全限定要开始的范围。无法确定此单元格P3将位于哪个工作簿的哪个工作表上。无。目前我只是想让它发挥作用。我真的不知道应该如何组合这部分代码以动态获得结果。另外,您是否考虑过使用布尔响应而不是字符串?函数从不返回任何内容,并且没有定义返回类型。将其设为sub,或者返回值,而不是更新P5或其他内容