gpt4 book ai didi

Excel VBA 如果单元格(x,J)。值(value)=值(value)

转载 作者:行者123 更新时间:2023-12-04 21:50:39 24 4
gpt4 key购买 nike

我对 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语句必须有 ThenIf 位于同一行的标记关键字 - 有两种写 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成员(member)来电,用这个 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函数,因为该单元格的值将是数据类型 Variant/Error ,并尝试将该数据类型与 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

关于Excel VBA 如果单元格(x,J)。值(value)=值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55007967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com