excel - VBA中的单元格修改功能
问题描述
我正在 VBA 中迈出第一步,我正在尝试创建一个函数,如果满足 IF 语句的某些条件,我可以将单元格的值更改为“FALSE”值。
这就是我到目前为止所拥有的
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
当我执行该函数时,我得到一个“#VALUE!” 如果我进行错误检查,它会告诉我公式中使用的值类型之一不正确,但应该注意的是,只有在我添加行“范围(”P3“)时才会发生这种情况。Value = False “”。否则,该函数将被执行,尽管显然在单元格中除了“0”之外没有给出任何结果。
谢谢!
解决方案
当我们需要从中获取值时使用A Function
,如果没有要检索的值,那么可能更好地使用 a Subroutine
。
我将您更改Function
为返回一个布尔值,False
如果条件满足。我正在Range("P3")
更新Sub
调用Function
.
所以它看起来像这样......
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
推荐阅读
- javascript - express 是否不再支持开箱即用的 ejs?
- sql - 使用别名变量的交叉表
- c# - asp.net 服务器标签在迭代中不起作用
- php - Codeigniter 将数据库值分配给变量
- modulo - 寻找非常大的数的余数
- node.js - 如何使用背景光栅图像将 svg 转换为 png(在 bash 或 nodejs 中)?
- delphi - 来自客户端中 RESTRequest 的参数未传递给服务器 - Delphi
- graphql - GraphQL 模式拼接 - 无法读取未定义的属性“args”
- php - 当我单击注册时,它会以文本形式打开 php 文件,而不是向数据库中添加值?
- image-processing - 使用霍夫曼树中的所有 ASCII 字符