如何在 VBA 的另一个函数中调用我在 VBA 中创建的函数?
Posted
技术标签:
【中文标题】如何在 VBA 的另一个函数中调用我在 VBA 中创建的函数?【英文标题】:how to call a function I created in VBA in onther function in VBA? 【发布时间】:2019-08-21 12:43:30 【问题描述】:我在 VBA 中创建了一个函数,我想在我在 VBA 中创建的另一个函数中调用它。这样做的正确语法是什么?
这是我要调用的函数:
Function AlreadySigned()
Dim i As Integer
Dim j As Long
j = ActiveCell.Row - 1
Dim tmp As String
tmp = ActiveCell.Value
For i = 3 To j
If Cells(i, 2).Value = tmp Then
ActiveCell.Interior.ColorIndex = 3
End If
Next i
End Function
在这个函数中:
Function AlreadyRegisterLoop()
Dim i As Integer
Dim j As Integer
j = Cells(Rows.Count, 1).End(xlUp).Row
For i = 3 To j
Cells(i, 2).AlreadySigned()
Next i
End Function
但在第 6 行有一个eror: syntax eror
。
【问题讨论】:
您到底想达到什么目的?我问的原因是因为我认为在这种情况下你不需要在函数内部调用函数......我感觉你可能不知道(无意冒犯)Procedure
和 @987654325 是什么@ 确实.. 所以请让我们知道您到底想达到什么目的...
【参考方案1】:
不完全确定您要做什么,但这不是调用函数的方式。
据我了解,我认为以下内容对您有用。
您应该传递一个 Range
对象并在函数中使用该 Range 对象而不是 Activecell
Function AlreadySigned(rn As Range)
Dim i As Integer
Dim j As Long
j = rn.row - 1
Dim tmp As String
tmp = rn.Value
For i = 3 To j
If ActiveSheet.Cells(i, 2).Value = tmp Then
rn.Interior.ColorIndex = 3
End If
Next i
End Function
Function AlreadyRegisterLoop()
Dim i As Integer
Dim j As Integer
j = ActiveSheet.Cells(Rows.count, 1).End(xlUp).row
For i = 3 To j
Call AlreadySigned(ActiveSheet.Cells(i, 2))
Next i
End Function
演示:
【讨论】:
还有一个错误:“类型不匹配” 类型不匹配@Mikku @NoaBenNathan .. 我已将工作表引用更改为活动工作表。立即尝试。 可怕的不必要的Call
?为什么不使用惯用的 VBA:AlreadySigned ActiveSheet.Cells(i, 2)
而不是回到 GoSub
的时代?以上是关于如何在 VBA 的另一个函数中调用我在 VBA 中创建的函数?的主要内容,如果未能解决你的问题,请参考以下文章