首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未执行的VBA函数

问未执行的VBA函数
EN

Stack Overflow用户
提问于 2014-12-17 17:01:54
回答 2查看 3K关注 0票数 1

我正在尝试创建一个函数,该函数在给定的单元格范围内寻找值,但它没有被执行。它应该返回值所在的单元格。

代码语言:javascript
复制
Function searchInRange(where As Range, what As String) As Range
For Each c In where.Cells
 Debug.Print (c.Value)
    If c.Value = what Then
        searchInRange = c
    End If
Next c

End Function

我从子模块调用它,但它没有执行。如果我去调试,调试器只是跳到下一个语句,而不输入函数。我不明白为什么

编辑

正如许多人建议的那样,我正在发布调用函数的模块。这是一个按钮点击功能。正确选择了文件和工作表。我之所以知道这一点,是因为最后一句(PE_Sheet.activate)是正确的。致以问候。

代码语言:javascript
复制
Private Sub CommandButton1_Click()
Dim PE_File As Workbook
Dim PE_Sheet As Worksheet
Dim cell As Range


Set PE_File = Workbooks(getSelectedWorkbook())
Set PE_Sheet = PE_File.Worksheets("Monitored")
Unload UserForm1

searchAlarmFilter PE_Sheet.Range("A:A"), "5184"

PE_Sheet.Activate
End Sub
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-17 17:20:41

您还需要set范围

代码语言:javascript
复制
Public Function sir(where As Range, what As String) As Range
Dim res As Range: Set res = Nothing
For Each c In where.Cells
    Debug.Print c.Value
    If c.Value = what Then
        Set res = c
        Exit For
    End If
Next
Set sir = res
End Function
票数 3
EN

Stack Overflow用户

发布于 2014-12-19 08:49:33

由于NickSlash是正确的,而且函数应该像他所指出的那样,这只是问题的一部分。我不明白为什么jet,但是在调用函数之前卸载表单会使解释器不执行函数。似乎以表单的任何方式依赖的所有变量都被卸载到表单中。这对我来说没有多大意义,但它是这样运作的。

因此,调用该函数的适当方法是:

代码语言:javascript
复制
Private Sub CommandButton1_Click()
Dim PE_File As Workbook
Dim PE_Sheet As Worksheet
Dim cell As Range


Set PE_File = Workbooks(getSelectedWorkbook())
Set PE_Sheet = PE_File.Worksheets("Monitored")
searchAlarmFilter PE_Sheet.Range("A1:A500"), "5184"
Unload UserForm1



PE_Sheet.Activate
End Sub

有关此函数的正确版本,请参见NickSlash的答案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27530858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档