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

时间:2016-07-10 22:50:02

标签: excel vba excel-vba ribbonx

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

我的另一个问题是离开该字段也会触发sub(onChange在离开时被激活);如果没有更改editbox,它不会触发事件;我无法抓住“按下”动作。

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

感谢您的帮助。

JP

1 个答案:

答案 0 :(得分:1)

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

  • 功能区中的编辑框,用于更新范围为我的模块的变量。

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

我使用的代码(当然这很简单,但可以帮助像我这样的其他初学者):

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

再次感谢@Rory的帮助