Excel VBA如果公式不起作用?
我有一些VBA代码,在几个工作簿之间工作 我遇到了一个问题,如果这个公式适用,我就无法得到它。 我不确定如何得到下标超出范围的错误 我曾尝试使用.RangeO、.RangeO:O、.RangeO,但都给出了相同的1004错误 我用的范围不对吗?我能够在不同的配方上使用range,所以不确定为什么这不起作用Excel VBA如果公式不起作用?,excel,vba,if-statement,formula,Excel,Vba,If Statement,Formula,我有一些VBA代码,在几个工作簿之间工作 我遇到了一个问题,如果这个公式适用,我就无法得到它。 我不确定如何得到下标超出范围的错误 我曾尝试使用.RangeO、.RangeO:O、.RangeO,但都给出了相同的1004错误 我用的范围不对吗?我能够在不同的配方上使用range,所以不确定为什么这不起作用 Sub if_after() Dim co_detail As Workbook Set co_detail = ThisWorkbook With co_
Sub if_after()
Dim co_detail As Workbook
Set co_detail = ThisWorkbook
With co_detail.Sheets("Detail")
For i = 2 To 100
.Range("O2").Formula = "=IF(L" & i & "=N" & i & ",'good','update')"
Next i
End With
End Sub
这是一个零,不是一个哦,全引号用于文本。引号还必须在带引号的字符串中加倍
.Range("o" & i).Formula = "=IF(L" & i & "=N" & i & ", ""good"", ""update"")"
这是一个零,不是一个哦,全引号用于文本。引号还必须在带引号的字符串中加倍
.Range("o" & i).Formula = "=IF(L" & i & "=N" & i & ", ""good"", ""update"")"
您可以将整个代码简化为以下内容-根本不需要循环,只需调整大小即可:
您可以将整个代码简化为以下内容-根本不需要循环,只需调整大小即可:
不要使用.Rangeo&i.Formula=…尝试使用.Rangeo&i.FormulaR1C1…。我总是使用公式1c1而不是公式。而不是使用.Rangeo&I.Formula=…尝试使用.Rangeo&I.FormulaR1C1…。我总是用公式1c1代替公式。Range2可能应该是Range2字母“O”而不是azero@cybernetic.nomad这只是这里的一种类型。谢谢你指出这一点。我的原始代码使用O.Range2,可能应该是Range2字母“O”,而不是azero@cybernetic.nomad这只是这里的一种类型。谢谢你指出这一点。我的原始代码使用O。我问题中的0是一个打字错误。对不起。看来我对单引号的看法是错的。感谢您对此进行的修复。我实际上在我的一个公式中使用了一些单引号,它正在工作,但是我不认为它被用作引号,而是文件路径的一部分。是的,类似于带有一个或多个空格的工作表名的内容必须用单引号括起来。我问题中的0是一个打字错误。对不起。看来我对单引号的看法是错的。谢谢你的修复。我实际上在我的一个公式中使用了一些单引号,它正在工作,但是我不认为它被用作引号,而是文件路径的一部分。是的,像工作表名称这样有一个或多个空格的东西必须用单引号括起来。我在阅读FormulaR1C1,但我看不到任何明显的优点。像C3这样的xlA1引用在xlR1C1中会被误解为C:C。@Jeeped,谢谢你的提示。我会记住这一点。我在阅读公式1C1,但我没有看到任何明显的优势。像C3这样的xlA1参考在xlR1C1中会被误解为C:C。@Jeeped,谢谢你的提示。我会记住这一点的。是的,谢谢你,我已经做过了。一旦我找到了For循环,我就可以回到另一种不用循环的方式。是的,谢谢你,我已经做过了。一旦我找到For循环,我就可以回到另一种不使用循环的方式。