【发布时间】:2013-03-27 00:30:15
【问题描述】:
我正在使用从 Microsoft 复制的函数,该函数采用列号并重新分配列字母。我需要这样做来创建一个公式。我已经研究了一整天,无法查明错误的原因(我也尝试将其作为子过程来完成)。该功能在其自己的模块中。我测试了它,它工作正常:
Function ConvertToLetter(ByRef iCol As Integer) As String
Dim iAlpha As Integer
Dim iRemainder As Integer
iAlpha = Int(iCol / 27)
iRemainder = iCol - (iAlpha * 26)
If iAlpha > 0 Then
ConvertToLetter = Chr(iAlpha + 64)
End If
If iRemainder > 0 Then
ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64)
End If
End Function
给我错误的代码是:
For groups = 1 To i ' level 1 grouping
For iCol = 24 To 136
rCol = ConvertToLetter(iCol)
Cells(Start(groups) - 1, rCol).Formula = "=COUNTA(" & rCol & Start(groups) & ":" & rCol & Finish(groups) & ")"
Next
Next
我尝试将函数代入公式本身:
Cells(Start(groups) - 1, ConvertToLetter(iCol)).Formula = "=COUNTA(" & ConvertToLetter(iCol) & Start(groups) & ":" & ConvertToLetter(iCol) & Finish(groups) & ")"
调试器通过了第一个函数调用,但没有通过第二个和第三个函数调用。我收到的错误是“期望变量或过程,而不是模块”的类型。在第二种情况下,我得到了其他错误,我的脑袋很模糊,我想不起来了。
非常感谢任何帮助。我已经没有想法了。非常感谢!
【问题讨论】:
-
你在用什么这么大的功能 :) 看到这个链接 这是一个 1 行代码 stackoverflow.com/questions/10106465/… 现在阅读剩下的问题 :)
-
调试行的时候
Cells(Start(groups) - 1, rCol).Formula...Start(groups)的值是多少,Start()有什么作用? -
什么是
Start(groups)? -
I am using a function that I copied from Microsoft可以分享一下链接吗? -
@siddharthRout - 链接是 support.microsoft.com/kb/833402 。写那个例子的人真的应该看看我的替代解决方案......