VBA编译错误

我对VBA的使用经验很less,而且最近一次使用VBA是几年前的事。 下面是我的VBA:

Function MacIDGen(total, current) If total - current = 0 Then current -1 Else current 1 End If Macro1 (current) End Function Sub Macro1(cur) Sheets("Donations").Cells(I2).Value = cur & "Test" End Sub 

这是它自己的模块,根本没有其他的代码。

所以我有一个叫MacIDGen()的单元格。 它传递MacID两个单元格值。 每当执行“错误:预期子,函数或属性”时都会出现错误,并强调函数方法签名。

我不知道为什么它在这里踢它,我猜是因为我错过了一个重要的步骤,或者如何在这种情况下不能有一个function或其他这样的问题。

编辑作为一个额外的信息,我在Excel中创build这些电子表格,作为随机数据生成表导入到Drupal站点。 我遇到了一个问题,如果不使用循环就无法解决(我也不能硬编码迭代的次数),哪个公式是不行的。

关于Compile Error ,你得到的是因为你忘了在current -1current 1使用=符号

就像我刚才提到的,有很多错误,但主要的错误是你不能使用UDF写入另一个单元格。 如果你把这个函数分解成函数或者子类,那真的没什么关系。 你根本不能写任何其他单元格。 您将在使用该function的单元格中获得一个#Value

当你想要返回一些东西的时候使用一个Function 。 现在,因为您正在使用这个作为UDF(用户定义函数),它应该返回的东西,并特定的单元格。

如果你正在写入函数被调用的同一个单元格,那么将你的代码改为

 Function MacIDGen(total, current) If total - current = 0 Then current = -1 Else current = 1 End If MacIDGen = current & "Test" End Function 

如果要更改单元格,则可以使用子过程而不是UDF,在这种情况下,需要从电子表格(如命令button,function区button或组合键快捷键)执行该过程。 如果是这样,你的第一行应该是:

 Sub MacIDGen(total, current)