【问题标题】:iferror statement for macros in vba excelvba excel中宏的iferror语句
【发布时间】:2013-05-20 22:53:11
【问题描述】:

我有一个宏,可以在某一时刻创建一个数据透视表。我的问题有时不是所有的值都在第二列,我得到一个错误。

我想出了一种解决方法,方法是从左侧列中获取相同的值。但是如果使用这种方法,如果枢轴相同,我会收到“未找到特殊单元格的错误”。

对不起,让我更清楚一点,我有一个用于合同名称的 A 列,而 C 列是从另一个表中调出合同值的枢轴。我得到错误的地方是 B 列,它有一个 if 语句,基本上说如果 C 列是“是”,那么使用合同名称。如果我在 B 列中的 if 语句产生错误,我仍然想要该值

我想要的是类似的东西

For each cl in range("C1:C200")  
if error and cl.offset(0, 1).value = yes then    
cl.value = cl.offste(0, -1) Else
Cl.value = cl.value
End if

【问题讨论】:

  • 您希望看到的是您没有测试任何变量的错误。你想看看 cl 有没有错误?
  • 肖恩,你需要澄清一下。您提到了“第二列”、“枢轴”、“枢轴”以及与特殊单元格有关的错误。为了得到答案,您需要扩展和阐述这些以及可能的其他项目。并且一如既往地向我们展示您的代码。
  • 对不起,让我更清楚一点,我有一个用于合同名称的列 A,而列 C 是从另一个表中调出合同值的枢轴。我得到错误的地方是 B 列,它有一个 if 语句,基本上说如果 C 列是“是”,那么使用合同名称。如果我在 B 列中的 if 语句产生错误,我仍然想要该值
  • @DougGlancy 因为我之前因为显示太多代码/输入太多而被否决,所以我尽量让我的代码和问题尽可能简单(省略我的代码中不是与问题相关)我相信我做了足够的工作,因为下面的用户能够回答我的问题。您能否删除您的否决票,因为如果您觉得我做了一些真正不可原谅的事情,我认为因为做某事而被否决(写太多/写一个更简洁的答案)是不公平的,我邀请您pm我,我可以试着解释一下自己
  • 我的否决票不是基于您之前的回答。我只是发现它非常不清楚,这是列出的两个投票标准之一。请注意,即使您得到了答案,它也以“我对您的问题感到非常困惑”开头。无论如何,我看到你用更多细节更新了这个问题,所以我删除了反对票。稍微不同的是,当他们说可能有更好的解决方案时,我会注意@user2140261。祝你的编码好运!

标签: excel vba loops if-statement


【解决方案1】:

我对您的问题感到非常困惑,并且强烈地感觉到您的问题有更好的解决方案,但我不确定您的问题到底是什么,所以这里是您的代码的工作版本:

For each cl in range("C1:C200")  
    If IsError(cl) and cl.offset(0, 1).value = "yes" then    
        cl.value = cl.offset(0, -1)
    End If
Next cl 

或者这可能是你想要的更多:如果右边的值为yes,则只查看错误并使用左边的值?

Sub error()

Dim rngErrors As Range

On Error Resume Next

Set rngErrors = Range("C1:C200").SpecialCells(xlCellTypeFormulas, xlErrors)

For Each rngcError In rngErrors
     If cl.offset(0, 1).value = "yes" then    
        cl.value = cl.offset(0, -1)
    End If
Next rngcError

On Error GoTo 0

End Sub

不需要你原来的else 就好像If 语句没有得到满足,无论如何它都不会发生任何事情。除非单元格中有您想删除的公式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    相关资源
    最近更新 更多