要在单元格中输入的VBA代码,具体取决于不同工作表中的单元格是否具有公式

时间:2016-01-19 11:45:15

标签: excel vba excel-vba

我希望有人可以帮助我。我正在尝试创建一个宏来查看一个工作表中的单元格,以查看该单元格是否具有公式。如果它有一个公式,它在不同的工作表上的同一单元格中输入1,如果不是它输入0.这是我到目前为止但它给我一个编译错误:下一个没有。

Sub FormulaMap()
Dim r As Integer
Dim c As Integer

For c = 9 To 17
   For r = 11 To 18

If Sheets("Data").Cells(c & r).HasFormula = True Then
  Sheets("Map").Cells(c & r).Value = 1
  Else: Sheets("Map").Cells(c & r).Value = 0

Next r

Next c

End Sub

感谢任何帮助。

5 个答案:

答案 0 :(得分:1)

如@Nathan_Sav所述,您需要在调用下一个End Ifr之前添加c,还需要使用逗号分隔c和{ {1}}函数中的{1}}。我还假设r是列引用,Cells是行引用?试试这个:

c

另请注意,VBA Integer类型的范围仅为-32,768到32,767。这就是为什么它建议使用Long(-2,147,483,648到2,147,483,647),特别是在经过行时。

答案 1 :(得分:0)

End If结尾处没有If Then Else

答案 2 :(得分:0)

有一件事是Nathan_Sav所说的,但第二件事是你必须改变你的Cells陈述,所以里面有两个论点。调用它的正确方法是

Cells(row, column)

所以在你的代码中它将是

Cells(r, c)

(如果r表示行和c - 列)

答案 3 :(得分:0)

您的代码应为

   For c = 9 To 17
   For r = 11 To 18

      If Sheets("Data").Cells(c, r).HasFormula = True Then
        Sheets("Map").Cells(c, r).Value = 1
      Else
        Sheets("Map").Cells(c, r).Value = 0
      End If


    Next r

    Next c

答案 4 :(得分:0)

作为替代方案,您可以尝试这种方法...... 你可以通过不同的范围......

RenderTransform