excel - Excel VBA 如果单元格(x,J)。价值=价值
问题描述
我对 excel vba 很陌生,但我希望使用 if then 语句来输入值。以下是我尝试使用的功能。它在粗体行上引发编译错误。基本上,如果 Jx = N/A,我试图用单元格 AXx 替换单元格 Jx。请帮忙!
Public Function GetDivisionFromCustRef()
Sheet1.Select
Dim x As Integer
x = 1
Do Until x > 8
**If Cells(x, J).Value = "N/A"**
**Then**
Cells(x, J).Value = Cells(x, AX).Value
x = x + 1
Else: Cells(x, J).Value = Cells(x, J)
End If
Loop
End Function
解决方案
J
是一个有效的变量名。在 VBA 中,当您希望某些内容成为字符串文字时,您需要将其括在双引号中,所以"J"
- 就像您在"N/A"
那里所做的一样。
如果您的模块Option Explicit
在顶部说,那J
将导致编译错误,因为它是一个未声明的变量 - 这是一件好事!您应该始终Option Explicit
在每个模块的顶部指定,这样拼写错误和未声明的变量将阻止编译不可能产生正确输出的程序。
If...Then
语句必须在与关键字相同的行上有标记Then
-If
有两种编写If
语句的方法。
排队:
If {condition} Then {statement}
或阻止:
If {condition} Then
{statements}
{Else}
{statements}
End If
请注意,指令分隔符标记 ( :
) 在 . 之后是多余的Else
。
程序是一个Function
;函数通常会返回一个结果- 供调用者使用的东西。给定名称“从 cust ref 获取除法”,我希望该函数返回类似于给定客户代码的除法代码或类似的东西。您可以通过分配给函数的标识符来使函数返回其结果:
GetDivisionFromCustRef = {result}
函数通常也没有副作用,例如选择工作表或替换单元格值;你有一个Function
程序,但你使用它就像一个Sub
. 把它变成一个Sub
程序,并根据它的目的来命名它——它没有“得到”任何东西。像这样的东西:
Public Sub UpdateDivisionForCustomers()
Sheet1
不需要选择或激活。不要使用不合格的Cells
成员调用,而是将此Sheet1
对象用作限定符:
If Sheet1.Cells(...) ... Then
Sheet1.Cells(...) = Sheet1.Cells(...)
End If
如果重复输入“sheet1”变得烦人,你可以使用一个With
块:
With Sheet1
If .Cells(...) ... Then
.Cells(...) = .Cells(...)
End If
End With
最后,字符串文字"N/A"
不是工作表单元格错误值 - 它是包含字符N
、/
和的字符串文字A
。如果您要验证公式是否返回#N/A
错误,则需要使用该IsError
函数,因为该单元格的值将是 data type Variant/Error
,并且尝试将该数据类型与除 an 之外的任何内容进行比较Error
将引发运行时错误 13 / "类型不匹配”。
综合以上所有内容:
Option Explicit
Public Sub UpdateDivisionForCustomers()
Dim x As Integer
x = 1
Do Until x > 8
If IsError(Sheet1.Cells(x, "J").Value) Then
Sheet1.Cells(x, "J").Value = Sheet1.Cells(x, "AX").Value
x = x + 1
Else
Sheet1.Cells(x, "J").Value = Sheet1.Cells(x, "J").Value
End If
Loop
End Sub
推荐阅读
- python - 字符串列表中的公共子字符串
- hive - 对 Hplsql.g4 或 Hive.g4 的数组支持
- python - 初始化许多 redis-py 连接会减慢服务器速度吗?
- tensorflow - 如何在 Optuna SuccessiveHalvingPruner() 中设置最小时期数?
- javascript - Netlify 在导入/导出模块时抛出错误,为什么?
- c++ - 有没有办法限制传递给方法的参数类型?
- reactjs - 如何改变多个 SWR 键
- reporting-services - 无法通过 Web 应用程序和报告生成器在 SSRS 中生成条形码字体
- r - 读取文件时,我可以指定一些列名并让 R 从标题行读取其余部分吗?
- python - pygame.key.set_repeat() 的正确用法