2015-03-10 17 views
5

atanan vba bir işlev arayıp başarılı oldu. Şimdi bir düğmeye bir makro atadım.Nasıl zaten excel bir kurdele oluşturmaya çalıştınız bir düğmeye

Function delete_cells(control As IRibbonControl) 

Şimdi, ben işlevini delete_cells çağırmak zorunda olduğu başka bir makro yarattı. Aşağıdaki gibi aramaya çalıştım.

Function modify_cells(control As IRibbonControl) 
delete_cells 
End Sub 

bir hata isteğe bağlı değil Argüman söyleyerek alıyorum. Lütfen bu hata ile bana yardımcı olun. Gelen

+0

Sen 'Function'' control' bağımsız değişken gerektirir. Bunu şu şekilde sağlamanız gerekiyor: 'delete_cells control'. Ben VBA yeni olduğum – L42

cevap

5

ben size onu aramak istediğiniz başka bir yerde düğmenin OnAction gelen çağrı ve ayrı alt yordam, örneğin yaratmanızı tavsiye:

'button macro 
Sub cmdDeleteCells_OnAction(control as iRibbonControl) 
DeleteCells 
End Sub 

'another Sub that calls the delete routine 
Sub SomeOtherSub 
DeleteCells 
End Sub 

'the one they're all talking about 
Sub DeleteCells 
msgbox "All your cells are toast, bwah hah hah ha!" 
End Sub 

DÜZENLEME: Eğer gerçekten sadece düğmenin OnAction alt aramak istiyorsanız, sahte bir yanı onu bir iRibbonControl nesne geçmek, böylece ilan etmek gerekir:

Sub CallTheButtonsCode() 
Dim FakeControl As IRibbonControl 

cmdDeleteCells_OnAction FakeControl 
End Sub 

gerçekten th önermiyoruz kod bakım nedenlerinden dolayı, ancak çalışır.

+0

Doug Glancy, Şu anda önerdiğiniz yöntemi kullanıyorum. Ama bu ekstra Sub kullanmadan bir yol olup olmadığını bilmek istiyorum. –

0

senin Function delete_cells(control As IRibbonControl) Bir GEREKLİ argüman ...(control As IRibbonControl) var. Eğer işlevini çağırdığınızda bu gibi görünmelidir:

Function modify_cells(control As IRibbonControl) 
delete_cells(myControl) 'myControl is your variable. Define what control you want to pass to the function. 
End Sub 
+0

, ben denetimleri hakkında çok şey bilmiyorum. Peki, delete_cells işlevine ne tür bir kontrol geçirmeliyim? Ben sadece delete_cells için belirtilen düğmeye bastığım delete_cells işlevini yürütmek istiyorum. –

+0

Ben @Doug Glancy gelen öneri kullanarak öneriyoruz. Ekstra alttan kurtulmak istiyorsanız, kodu doğrudan kodun tamamını çalıştırmak istediğiniz yerden tüm prosedürlere yapıştırabilirsiniz, ancak bu iyi bir uygulama değildir. 'Sub SomeOtherSub DeleteCells sonu Sub' Doug bahsettiği gerekli değildir, hiç gerek yoktur. Bu sadece bir gösteri, farklı yerlerden 'DeleteCells 'diyebilirsiniz. –

İlgili konular