2011-05-17 19 views
9

Erişim uygulaması için özel bir şerit oluşturmak üzere directions here'u takip ettim. Ama düğmelerden hiçbiri işe yaramadı! Genel ve standart bir modülde olsa bile Access'in işlevi veya makroyu bulamadığı bir hatayla karşılaştım.Özel Şerit açıkAş sözdizimi sorusu

onAction="=fncMyFunction('string argument', 1234)"

fncMyFunction elle şerit nesne argümanlar yazılan, ancak alır:

Sonunda ben aşağıdaki sözdizimini kullanılırsa işe olacağını keşfetti.

Word'de başka bir proje için, belgeyi .ZIP dosyası olarak açarak, XML'i uygun yere ekleyerek ve ona bir başvuru ekleyerek özel bir Şerit oluşturdum. Relevant directions somewhere in this novel here. düğme tıklandığında

Word'de

onAction="fncMyFunction"

, fncMyFunction kendisine geçirilen bir kurdele nesnesi vardır: Word

, ben işe ben şu sözdizimi ile bunu beklenen şekilde her şeye sahip başardı .

Buradaki anlaşma nedir? Neden farklı sözdizimi? Ve bir şekilde mi, diğeri "yanlış mı?"

cevap

10

Şerit elemanın tag özelliğini, işleminize geçmek istediğiniz bazı değerleri depolamak için kullanmalısınız.

  • ilk düğmesi tıklandığında form FormDashBoardFinance açan bir jenerik eylemi ribbonOpenForm kullanır: Örneğin

    , birkaç düğme içeren basit kurdele olduğunu varsayalım.

  • ikinci düğme LogOff("bye") VBA fonksiyonunu yürütmek genel eylem ribbonDoAction kullanır (bir alt!) O, örneğin, kullanıcıya bir mesaj görüntüler ve kapatır.
  • sonuncusu, fncMyFunction() için istediğiniz davranışı çoğaltır. Erişim Ribbon için mükemmel bir kaynak Avenius Gunter's Access 2010 Ribbon site

    olduğunu

    Option Compare Database 
    Option Explicit 
    
    ' We keep a reference to the loaded Ribbon 
    Private ribbon As IRibbonUI 
    
    '----------------------------------------------------------------------------- 
    ' Save a reference to the Ribbon 
    ' This is called from the ribbon's OnLoad event 
    '----------------------------------------------------------------------------- 
    Public Sub ribbonLoad(rb As IRibbonUI) 
        Set ribbon = rb 
    End Sub 
    
    '----------------------------------------------------------------------------- 
    ' Open the Form specified by the ribbon control's Tag. 
    '----------------------------------------------------------------------------- 
    Public Sub ribbonOpenForm(control As IRibbonControl) 
        DoCmd.OpenForm control.tag, acNormal 
    End Sub 
    
    '----------------------------------------------------------------------------- 
    ' Perform the action specified by the ribbon control's Tag 
    ' Use single quotes to delimit strings, they will be expanded. 
    ' The action to be performed must be defined as a public Function! 
    '----------------------------------------------------------------------------- 
    Public Sub ribbonDoAction(control As IRibbonControl) 
        Dim action As String 
        action = Replace(control.Tag,"'","""") 
        Eval action 
    End Sub 
    
    '----------------------------------------------------------------------------- 
    ' fncMyFunction example implementation 
    ' Use single quotes to delimit strings, they will be expanded. 
    '----------------------------------------------------------------------------- 
    Public Sub fncMyFunction(control As IRibbonControl) 
        ' Split the string to separate the paramaters in the Tag 
        Dim params As Variant 
        params = Split(control.Tag, ",") 
        ' Now we can assign each parameter 
        Dim myString As String 
        Dim myInt As Integer 
        myString = Replace(Trim(params(0)),"'","") ' remove single quotes 
        myInt = CInt(Trim$(params(1)))    ' We're expecting an Integer 
        ' ... do something with the params ... 
        Debug.Print myString ' Will print: a string argument 
        Debug.Print myInt * 2 ' Will print: 2468 
    End Sub 
    

    :

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" 
      onLoad="ribbonLoad" loadImage="ribbonLoadImage"> 
    <ribbon startFromScratch="false"> 
     <tabs> 
     <tab id="Home" label="Home"> 
        <group id="gpDash" label="Dashboards"> 
         <button id="btHomeFinance" 
           label="Finance" 
           imageMso="BlogHomePage" 
           onAction="ribbonOpenForm" 
           tag="FormDashBoardFinance"/> 
         <button id="btLogOff" 
           label="Log Off" 
           imageMso="DatabasePermissionsMenu" 
           onAction="ribbonDoAction" 
           tag="LogOff('bye')"/> 
         <button id="btMyFunc" 
           label="My Function" 
           imageMso="AppointmentColorDialog" 
           onAction="fncMyFunction" 
           tag="'a string argument', 1234"/> 
        </group> 
      </tab> 
     </tabs> 
    </ribbon> 
</customUI> 

VBA kurdele bir modül olacaktır yönetmek için