• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Vbada Excel için Bir kez Commandbuton tanımlayıp diğer menülere ekleme

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
..................
Set cbCLL = CommandBars("Cell")
With cbCLL
    Set SutGen_hcr = cbCLL.Controls.Add(msoControlButton)
    With SutGen_hcr
        .Caption = "Sütun &Genişliği Cm"
        .OnAction = "sutun"
        .FaceId = 2067
    End With
    Set SutGen_hcr = Nothing
...............

kod dizisi ile aşağıdaki menülere ayrı ayrı bu komutu ekliyorum

'Worksheet menü>Biçim> _
Satır [Yeni buton(Satır Genişliği Cm.)]/Cell Menü [yeni]/Row Menü [yeni]


Kod:
    With .Controls.Add(Type:=msoControlButton, ID:=4)
        .Visible = True
    End With

komutu excelin normal yazdır butonu ve ID ile çağrılıyor.... bunun gibi bir çözüm varmı acaba......
 
Bu sorunu aşamazmıyız excelin kendi komutlarını ID=4 istediğimiz menünün altına taşıyoruz aynı şekilde ya biz ID verelim yada mytag veya caption ile eklensin...
 
Ben biraz kurcaladım ama olmadı, sanırım bu özellik sadece yerleşik menüler için geçerli ...
 
siz dediyseniz doğrudur hocam, saygılarmla
 
Merhaba,

Bu sefer haberler iyi ... :mrgreen:

Ekte bir örnek dosya hazırladım. Burada, sayfa üzerindeki sağ klik menüsüne ("Cell") çalışma kitabındaki sayfa isimleri menü olarak listeleniyor ve tıklandığında o sayfaya gidiyorsunuz.

Aynı zamanda, sayfa sekmeleri tıklandığında çıkan sağ klik menüsüne ("Ply") ise , örnek olarak ikinci çalışma sayfasının seçilebileceği bir menü eklenmiştir. Bu menü ise uzun kodlamayla değil, daha önce oluşturulmuş diğer menü elemanları arasında "Tag" sorgulamasıyla bulunup, ikinci PopUp'a yani "Ply" menüsüne kopyalanmıştır.

Ekli dosyadaki kod mantığının, sorununuzu çözeceğini sanıyorum ....



.
 
Son düzenleme:
Hocam işyerindeyim Ve İşletim sistemim vista Row, Cell, Coloumn eklediğim sağ tuşları katlediyor... durmadan....

ve herhalde bu nedenle plyde sadece sheet2 gözüküyor.

Yalnız sizden ricam .Reset yerine .delete ile for next ile eklenenleri nasıl kaldıracağım şeklindedir. Çünkü cell de (sütun, satır cm yaralrı, değerleri yapıştır, büyük küçük harf değiştir, yazdır) komutları xla da var plyde diğer sayfaları sil komutum var
 
"Cell" menüsünde bütün sayfalar gözükür.

"Ply" menüsünde ise sadece 2nci sayfa gözükür, bilinçli olarak yapılmıştır.

Bu dosyada esas konu, önceden hazırlanmış bir "custom" menünün sonradan başka bir menüye, uzun uzadıya kod yazmadan kopyalanmasını sağlamaktır ki, sizin esas problemniz buydu.

Geri kalan işleri ise siz kendi çalışmanıza göre uyarlarsınız artık ....
 
anladım hocam teşekkür ederim...
 
teşekkürler hocam saygılarımla
 
Rica ederim, saygı bizden ...
 
Hocam sayenizde komutları hem kopyaldım hemde istediğim sıraya yerleştirdim....
yalnız Taga göre yapamdım caption a göre yaptım ama netice 10 numara
Allah tekrar razı olsun
Kod:
Option Private Module
Sub Ozelmenuekle()
Call MenuDgr
Call OzelmenuKaldır
    
    With cbpDZN                     '*DÜZEN menüsüne ekleme yap
    '***Düzen Menüsüne Komut Ekle
        Sirnok1 = .Controls.Count
        For i = 1 To Sirnok1
            If .Controls(i).ID = 848 Then        'Sayfayı taşı veya Kopyala Komutunun Sıra Numarasını öğren
                sirno1 = i                        'Değişkene Ata
            End If
        Next
        
        With .Controls.Add(msoControlButton, , , sirno1 + 1) 'bir sonrasına kendi komutumuzu yerleştirdik....
            .Caption = "Sayfa(-yı/-ları) Ko&pyala"
            .FaceId = 53
            .BeginGroup = True
            .OnAction = "AktSayfaKopyala"
            .Tag = "HsrKK01"
        End With
    End With                        '*DÜZEN menüsüne ekleme bitti
'<<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>>
    With cbpEKL                     '*EKLE men&#252;s&#252;ne ekleme yap
    '***D&#252;zen Men&#252;s&#252;ne Komut Ekle
        Sirnok2 = .Controls.Count
        For i = 1 To Sirnok2
            If .Controls(i).ID = 852 Then        '&#199;al&#305;&#351;ma Sayfas&#305; (Ekle) Komutunun S&#305;ra Numaras&#305;n&#305; &#246;&#287;ren
                sirno2 = i                        'De&#287;i&#351;kene Ata
            End If
        Next
        
        With .Controls.Add(msoControlButton, , , sirno2 + 1) 'bir sonras&#305;na kendi komutumuzu yerle&#351;tirdik....
                .Caption = "Sayfa Ekle ..."
                .FaceId = 2646
                .BeginGroup = True
                .OnAction = "SayfaEkle"
                .Tag = "HsrKK02"
        End With
    End With                        '*EKLE men&#252;s&#252;ne ekleme bitti
    'Exit Sub
'<<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>> <<==>>
    With cbrPLY                     '*PLY bara komut kopyala
        Sirnok3 = .Controls.Count
        For i = 1 To Sirnok3
            If .Controls(i).ID = 945 Then: sirno3 = i
            If .Controls(i).ID = 848 Then: sirno4 = i
        Next
        Set MyControl1 = cbpEKL.Controls("Sayfa Ekle ..."):         MyControl1.Copy cbrPLY, sirno3 + 1
        Set MyControl2 = cbpDZN.Controls("Sayfa(-y&#305;/-lar&#305;) Ko&pyala"):         MyControl2.Copy cbrPLY, sirno4 + 2
    End With                        '*PLY bara komut kopyalama bitti
End Sub

Sub OzelmenuKald&#305;r()
'*Dosya i&#351;lem &#231;ubu&#287;undan men&#252;y&#252; kald&#305;r
    On Error Resume Next
    'Set cbrWMB = CommandBars(1)
    cbpDZN.Controls("Sayfa(-y&#305;/-lar&#305;) Ko&pyala").Delete
    cbpEKL.Controls("Sayfa Ekle ...").Delete
    cbrPLY.Controls("Sayfa Ekle ...").Delete
    cbrPLY.Controls("Sayfa(-y&#305;/-lar&#305;) Ko&pyala").Delete
    'cbrWMB.Controls("&Ozel Men&#252;m").Delete
End Sub
 
Hocam hatta mycontrol&#252; set etmeye bile gerek yokmu&#351;

Kod:
        cbpSTN.Controls("S&#252;tun &Geni&#351;li&#287;i Cm").Copy cbrSTN, sirno8 + 1

&#351;eklindede oluyor cnpstn, cbrply daha evvel public de&#287;i&#351;ken olarak tan&#305;mlanm&#305;&#351; ve a&#231;&#305;l&#305;&#351;ta set edilmi&#351;tir.
 
Geri
Üst