RibbonX-Workshop - Auswahlfeld

In diesem Teil wollen wir ein Auswahlfed erstellen. Hierfür wird folgender RibbonX-Code verwendet. Der Beispielcode erstellt zwei Auswahlfelder. Mit diesen sollen verschiedene Einträge aus zwei Listen in ein "Rechnungsblatt" übertragen werden. Hierbei wird der jeweils erste Eintrag in das "Rechnungsblatt" übertragen. Die restlichen Angaben werden durch SVerweis übernommen.

Erstellen Sie eine neue Arbeitsmappe (das erste Tabellenblatt in "Rechnung-Ausfüllen", das zweite Tabellenblatt in "Artikelliste" und das dritte Tabellenblatt in "Kundendaten" benennen). Fügen Sie ein neues Modul und in dieses die folgenden für das erste Auswahlfeld gültigen Makros ein.

Option Private Module
Public objRibbon As IRibbonUI

Public Sub rx_onload(ribbon As IRibbonUI)
    Set objRibbon = ribbon
End Sub

Public Sub Artikel_getItemCount(control As IRibbonControl, ByRef returnedVal)
   returnedVal = 200
End Sub

Public Sub Artikel_getItemID(control As IRibbonControl, index As Integer, ByRef id)
   id = "Eintrag" & index + 3
End Sub

Public Sub Artikel_getItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
   returnedVal = ThisWorkbook.Sheets("Artikelliste").Cells(index + 3, 3).Value
End Sub

Public Sub Artikel_onAction(control As IRibbonControl, id As String, index As Integer)
 Rem Trägt den gewählten Artikel in die Rechnung ein 
 ThisWorkbook.Sheets("Rechnung-Ausfüllen").Cells _
     (Cells(1048576, 1).End(xlUp).Row + 1, 1).Value = ThisWorkbook.Sheets("Artikelliste").Cells _
     (index + 3, 4).Offset(0, -3).Value
End Sub


Fügen Sie nun ein zweites Modul und in dieses die für das zweite Auswahlfeld gültigen Makros ein.

Option Private Module
Public Sub Kunde_getItemCount(control As IRibbonControl, ByRef returnedVal)
   returnedVal = 200
End Sub

Public Sub Kunde_getItemID(control As IRibbonControl, index As Integer, ByRef id)
   id = "Eintrag" & index + 3
End Sub

Public Sub Kunde_getItemLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
   returnedVal = ThisWorkbook.Sheets("Kundendaten"). Cells(index + 3, 4).Value
End Sub

Public Sub Kunde_onAction(control As IRibbonControl, id As String, index As Integer)
   Rem Trägt die Posi des Kunden in die Rechnung ein 
   With ThisWorkbook
     .Sheets("Rechnung-Ausfüllen").Range("H2").Value = _
     .Sheets("Kundendaten").Cells(index + 3, 4).Offset(0, -3).Value
   End With
End Sub


Speichern Sie nun die Änderung und schließen die Arbeitsmappe. Öffnen Sie selbige mit dem CustomUI-Editor und fügen in das Codefenster folgenden Code ein.

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="rx_onLoad">
  <ribbon startFromScratch="true">
    <tabs><tab id="tab01" label="Rechnungserstellung">
      <group id="grpCombo" label="Kundenwahl" >
           <dropDown id="ddcKunde" label="Kunde:" screentip="Kunden auswählen"
                     supertip="Die Kundenkennung (Posi) auswählen" sizeString="xxxxxxxxxxxxxxx"
                     onAction="Kunde_onAction" getItemCount="Kunde_getItemCount"
                     getItemID="Kunde_getItemID" getItemLabel="Kunde_getItemLabel" >
           </dropDown>
           <dropDown id="ddcArtikel" label="Artikel:" screentip="Artikel auswählen"
                     supertip="Die Artikelkennung (Posi) auswählen" sizeString="xxxxxxxxxxxxxxx"
                     onAction="Artikel_onAction" getItemCount="Artikel_getItemCount"
                     getItemID="Artikel_getItemID" getItemLabel="Artikel_getItemLabel" >
           </dropDown>
      </group>
    </tab>
    </tabs>
  </ribbon>
</customUI>


Speichern Sie die Änderung und schließen den Editor.

Beschreibung

id: Gibt die control.ID an
label: Die Beschreibung des Elementes
getItemID: Die ID des Eintrages
getItemLabel: Der Eintrag
getItemCount: Die Anzahl der möglichen Einträge
onAction: Das auszuführende Makro