2014-01-06 100 views
4

我对VBA的使用经验很少,而且最近一次使用VBA的时间很多年前。 继承人我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两个其他单元格值。每当它执行时出现错误“编译错误:预期的子,函数或属性”并突出显示函数方法签名。

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

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

+1

有很多错误,但主要的错误是,你不能使用UDF写入到另一个细胞。 –

+0

所以这就是为什么我要调用宏。此外,错误发生在第一行,它没有接近写入的地方:/ –

+0

发布答案 –

回答

2

关于Compile Error,你得到的是因为你忘了就像我提到的使用=登录current -1current 1

,有很多错误,但主要的错误是,你不能使用UDF写入另一个小区。如果将该函数分解为函数或子函数,这并不重要。你根本无法写入任何其他单元格。您将在使用该功能的单元格中获得#Value

A Function用于您想要返回某些内容时。现在,因为您将此用作UDF(用户定义的函数),它应该返回某些内容并将其返回给特定的单元格。

如果您正在编写到该函数从名为那么如果你想改变,你可以使用一个子过程,而不是一个UDF的细胞更改您的代码

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

    MacIDGen = current & "Test" 
End Function 
+0

这已修复此问题。然而,当你说你不能用UDF改变单元值时,我不能调用Macro1,并让它改变值(如上所述)? –

+0

否你不能:)编辑后,你不需要Dim语句,所以我已经从我的代码中删除它。 –

0

同一单元格,在您需要一种方法来从电子表格中执行它,例如commandButton,功能区按钮或组合键快捷键。 如果是这样,你的第一行应该是:

Sub MacIDGen(total, current)