我对Excel很陌生并且非常困惑,所以请原谅任何基本问题。我有一个完美的自定义VBA功能:
Public Function MissingSequence(Rng As Range) As String
Dim iCnt As Integer
65 'ASCI character for "A"
Dim iNum As Integer
For iNum = 100 To 110
Dim sCheck As String
sCheck = Chr(iCnt) & iNum
If Rng.Find(sCheck, lookat:=xlWhole) Is Nothing Then
Dim sMissingNumbers As String
sMissingNumbers = sMissingNumbers & "," & sCheck
End If
Next
MissingSequence = Mid(sMissingNumbers, 2)
End Function
我目前正在使用=MissingSequence(D4:D10)
在单元格内调用此函数。但是,我想将此函数调用移动到一个按钮。
当我使用以下代码创建命令按钮时:
Public Sub CommandButton1_Click()
MissingSequence(D4:D10)
End Sub
...然后按下按钮,没有任何反应。在VBA中调试时,我收到语法错误。
当我试试这个......
Public Sub CommandButton1_Click(D4:D10)
MissingSequence
End Sub
...再次单击按钮,没有任何反应。调试时,我收到错误 预期:列表分隔符或) 。
我现在完全不知道如何使用按钮让这个功能正常工作,感觉我已经尝试了一切,所以我真的很感激一些帮助。
答案 0 :(得分:3)
在您的代码中,您尝试使用
命令MissingSequence(D4:D10)
D4:D10
在这种情况下没有任何意义(它实际上会认为D4
和D10
是变量或函数/子例程,而:
是命令分隔符) ,因此您需要使用Range
函数将其转换为范围类型。
最好在任何范围前加上对范围所在的工作表的引用。
Public Sub CommandButton1_Click()
'As this is a function that is being called, you need to catch the response.
'Failing to do so will cause the compiler to think that is a subroutine
'being called, and the `()` will force the parameters to be passed as values.
Range("B1") = MissingSequence(Range("D4:D10"))
'/ This should be preferred. Sheet1 is just the example name.
Range("B1") = MissingSequence(Sheet1.Range("D4:D10"))
End Sub