获取“编辑框”上的值;使用VBA在Excel功能区中返回

获取“编辑框”上的值;使用VBA在Excel功能区中返回,vba,excel,ribbonx,Vba,Excel,Ribbonx,我的第一个问题。 我正在尝试在Excel功能区中添加自定义搜索字段。我对常规研究的问题是:它的默认范围是“ThisWorksheet”,而我想要整个工作簿(甚至其他已知的工作簿)。 所以我在功能区中创建了一个编辑框。我使用“onChange”来验证我的输入并触发我的定制研究子系统。 但我更希望它只在我按下键盘上的“回车”键时被触发,或者将焦点放在另一个功能区按钮上(一个“搜索”按钮,它将用我的editbox值触发研究子按钮,当焦点仍在editbox上时,按下Return键时,它将被激活 我的另一

我的第一个问题。 我正在尝试在Excel功能区中添加自定义搜索字段。我对常规研究的问题是:它的默认范围是“ThisWorksheet”,而我想要整个工作簿(甚至其他已知的工作簿)。 所以我在功能区中创建了一个编辑框。我使用“onChange”来验证我的输入并触发我的定制研究子系统。 但我更希望它只在我按下键盘上的“回车”键时被触发,或者将焦点放在另一个功能区按钮上(一个“搜索”按钮,它将用我的editbox值触发研究子按钮,当焦点仍在editbox上时,按下Return键时,它将被激活

我的另一个问题是,离开该字段也会触发sub(离开时onChange被激活);如果editbox没有被更改,它不会触发事件;并且我无法捕获“Enter pressed”操作

有没有办法解决我想做的事情? 如果没有,是否有方法调用本机搜索函数,将“工作簿”范围作为默认范围,而不是“此工作表”

谢谢你的帮助

JP

我最后做了什么(我只需要扫描第一列):

  • 功能区中的编辑框将更新范围为“我的模块”的变量

  • 功能区中的“Go”按钮启动对变量中存储的字符串的研究

我使用的代码(当然很简单,但可能对我这样的初学者有所帮助):


再次感谢@Rory的帮助

我建议您使用editbox的
onChange
回调函数将文本存储在一个变量中。然后在按钮的
onAction
回调函数中引用该变量。@Rory感谢您的回答。这不是我想要的,但肯定是一个很好的解决方法。谢谢!
Private nomPatientRecherche As String


Public Sub RecherchePatient(control As IRibbonControl)

Dim feuille As Worksheet, zone As Range, cellule As Range

For Each feuille In ThisWorkbook.Worksheets
    feuille.Activate
    Set zone = feuille.Range("A2:A" & ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row)
    For Each cellule In zone
        If Not cellule.Find(nomPatientRecherche) Is Nothing Then
            cellule.Activate
            If Not MsgBox("Continuer ?", vbOKCancel, "Continuer ?") = vbOK Then
                Exit Sub
            End If

        End If

    Next cellule
Next feuille

End Sub


Public Sub DefineNomPatientRecherche(control As IRibbonControl, nom As String)
    nomPatientRecherche = nom
End Sub