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......
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
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...
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Ben biraz kurcaladım ama olmadı, sanırım bu özellik sadece yerleşik menüler için geçerli ...
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
siz dediyseniz doğrudur hocam, saygılarmla
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
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:
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
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
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
"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 ....
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
anladım hocam teşekkür ederim...
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
....
...

Yalnız sizden ricam .Reset yerine .delete ile for next ile eklenenleri nasıl kaldıracağım şeklindedir.
....
...
Bir ara aşağıdaki dosyayı da denersiniz ....




.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
teşekkürler hocam saygılarımla
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Rica ederim, saygı bizden ...
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
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
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
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.
 
Üst