RibbonX-Workshop - Eingabefeld
Erstellen Sie eine neue Arbeitsmappe. Fügen Sie ein neues Modul und in dieses den folgenden Makrocode ein.
Option Private Module
Option Explicit
Declare Function tapiRequestMakeCall Lib "Tapi32.dll" (ByVal DestAddress As String, ByVal AppName As String, ByVal CalledParty As String, _
ByVal Comment As String) As Long
Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_COMMAND As Long = &H111
Public objRibbon As IRibbonUI
Public A$
Public Sub onload(ribbon As IRibbonUI)
Set objRibbon = ribbon
End Sub
Sub BoxWahlRaus(control As IRibbonControl, ByRef text)
Dim i As Integer
Dim Zelle As Integer
Dim A$
A$ = text
Telefonieren A, " "
End Sub
Sub Telefonieren(TelefonNr$, derName$)
Application.EnableCancelKey = False
Dim retval As Long
retval = tapiRequestMakeCall(TelefonNr, "", derName, "")
If retval <> 0 Then
MsgBox "Beim Verbindungsaufbau ist ein Fehler aufgetreten!"
End If
End Sub
Speichern und schließen Sie die Arbeitsmappe und öffnen Sie diese dann mit dem CustomUI-Editor. Fügen Sie dann im Codefenster folgenden XML-Code ein.
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="onLoad">
<ribbon>
<tabs>
<tab id="tabExcelvorlage" label="Telefonieren">
<group id="groupTelefonieren" label="Telefonieren">
<editBox id="ebx_Schnellwahl" onChange="BoxWahlRaus" supertip="Telefonnummernschnellwahl. Nummer eingeben und Entertaste drücken."
sizeString="wwwwwwwwww"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Jetzt wollen wir das Eingabefeld beim Laden des Menübandes mit einem Wert vorbelegen. Den Wert holen wir uns aus der Zelle "A1" des Blattes "Tabelle1".
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="edb0_onLoad">
<ribbon>
<tabs>
<tab id="inpTab" label="InputFields" insertAfterMso="TabView">
<group id="InputGroup" label="Info Inputfield">
<editBox id="edb0" label="Test" getText="edb0_getText" sizeString="wwwwwwww" onChange="edb0_onChange" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Option Private Module
Option Explicit
Public objRibbon As IRibbonUI
Public Sub edb0_onLoad(ribbon As IRibbonUI)
Set objRibbon = ribbon
End Sub
Sub edb0_getText(control As IRibbonControl, ByRef Text)
Text = ThisWorkbook.Sheets("Tabelle1").Range("A1").Value
End Sub
Sub edb0_onChange(control As IRibbonControl, Text As String)
ThisWorkbook.Sheets("Tabelle1").Range("A1").Value = Text
End Sub
Sie können das Eingabefeld auch zur Laufzeit füllen lassen. Hierzu können Sie z.B. das Worksheet_Change-Ereignis einsetzen. Wir beziehen uns im Beispiel wieder auf Zelle "A1" Immer wenn A1 geändert wird lassen wir das Menüband aktualisieren. Eingaben in anderen Zellen werden nicht beachtet. Den folgenden Code legen Sie im Codebereich der Tabelle ab.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then objRibbon.Invalidate
End Sub