• DİKKAT

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

Seçili Makroları Çalıştırma

  • Konbuyu başlatan Konbuyu başlatan ozgurpeh
  • Başlangıç tarihi Başlangıç tarihi

ozgurpeh

Altın Üye
Katılım
30 Eylül 2007
Mesajlar
383
Excel Vers. ve Dili
2010 Türkçe
Merhaba,

Tüm makroların olduğu bir açılan kutu ile istenilen makroları seçip bir buton ile çalıştırabilirmiyiz ?

Regard
 
Merhaba.

Aşağıdaki şekilde deneyin.
Açılır liste olarak B2 hücresinde veri doğrulama -> liste yöntemini uygulayacağınızı ve veri kaynağı olarak da Makro adlarını eklediğinizi varsaydım.
B2 hücresinden makro adını seçip düğmeye (ActiveX bölümündeki Command Button) tıklamanız yeterli olur.
.
Kod:
[B][COLOR="Blue"][FONT="Arial Narrow"]Private Sub CommandButton1_Click()[/COLOR][/B]
If [B2] = "Makro1" Then
    Call Makro1: Exit Sub
ElseIf [B2] = "Makro2" Then
    Call Makro2: Exit Sub
End If
[B][COLOR="blue"]End Sub[/COLOR][/B]

[B]Sub Makro1()[/B]
MsgBox "Acaba ne yapsam!" & vbLf & _
    "En iyisi Makro1'i çalıştırayım."
[B]End Sub[/B]

[B]Sub Makro2()[/B]
MsgBox "Acaba ne yapsam!" & vbLf & _
    "En iyisi Makro2'yi çalıştırayım."
[B]End Sub[/B][/FONT]
 
selam,
fikir vermesi açısından, daha önce benzer bir soruya cevap olarak hazırladığım dokuman ektedir.. İncelersiniz..
kolay gelsin...


Not : Ek güncellendi..
 

Ekli dosyalar

Son düzenleme:
Günaydın, her iki mesajda fazlasıyla yardımcı oluyor. Destek ve paylaşım için teşekkür ederim.

Selamlar.
 
bu konu hakkında son olarak kutucuk tikleyip aynı andan birden fazla makro çalıştırabilirmiyiz ?
 
selam,
#4 mesajdaki ek , kutucuklarla seçim yapılıp , seçilen makroların peşpeşe çalıması yönünde sayfa da eklenerek güncellendi...
kolay gelsin..
 
selam,
#4 mesajdaki ek , kutucuklarla seçim yapılıp , seçilen makroların peşpeşe çalıması yönünde sayfa da eklenerek güncellendi...
kolay gelsin..

Geçekten çok güzel bu haliyle işimi görüyor çok teşekkür ederim, görsel olarak daha estetik olması açısından soruyorum bir buton tıkladığımız zaman açılan bir formda makrolar seçilip bu işlem yapılabilir mi ?
 
selam,
söylediğiniz list box ile yapılabilir. Fırsat bulduğumda bakmaya çalışırım.
Çoklu seçimlerde, makroların çalıştırılma sırasına göre seçimin belirlenmesi bence daha önemli. Yani önce makro4 , sonra makro2 ve daha sonra Makro5 gibi...
#4 no lu mesajdaki eki, dosyaya bu yönde bir sayfa daha ekleyerek güncelliyorum..
İncelersiniz..
 
Değişik bakış açıları ile güzel perspektifler sunuluyor. Çozumler için , yeni başlayacak olan arkadaslarımıza öğretici olması bakımından tesekkur ederiz.
 
selam,
bu örnek de listbox liste transferi ile hazırlandı. İncelersiniz..
kolay gelsin...

listbox da tamam butonuna tıklatığımızda test makrosunu çalıştırabilirmiyiz ? 2 butona basmaya gerek yok ve daha pratik olur

kısacası aşağıdaki 2 makroyu birleştirmek istiyorum ama 2 nci makro tamam butonuna basınca çalışsın

If Me.Secim.ListCount = 0 Then GoTo 10:
Application.ScreenUpdating = False
k = Me.Secim.ListCount
For i = 0 To k - 1
[Start].Offset(i, 0) = i + 1
[Start].Offset(i, 1) = Me.Secim.List(i)
Next i
Application.ScreenUpdating = False
Unload Me
Exit Sub
10:
MsgBox "Seçim listeniz VERİ içermemektedir."
End Sub

Sub test()
Dim MA As String, i As Integer, k As Integer
On Error Resume Next
If [Start].Value = "" Then Exit Sub
k = Application.WorksheetFunction.CountA([Yeni])
For i = 1 To k
If [Start].Offset(i - 1, 1).Value <> "" Then
MA = [Start].Offset(i - 1, 1).Value
With Application
.ExecuteExcel4Macro "RUN(""" & MA & """)"
MA = ""
End With
End If
Next
End Sub
 
selam,
nasıl yapmak istediğinize bağlı olarak Tamam butonunun komutlarında değişiklik yaparak halledebilirsiniz...
1 - makro isimleri seçilenlerde yazsın , ama tamam butonuna basınca dirk seçilen makrolar çalışsın..

Private Sub CommandButton2_Click()

makrosunda

Kod:
For i = 0 To k - 1
[Start].Offset(i, 0) = i + 1
[Start].Offset(i, 1) = Me.Secim.List(i)
    MA = Me.Secim.List(i)
        With Application
            .ExecuteExcel4Macro "RUN(""" & MA & """)"
             MA = ""
        End With
Next i
değişiklik yaparsınız.

2 - makro isimleri yazılmasın , tamam butonuna basılınca makrolar çalışsın derseniz...

a _ module deki

Kod:
Sub FormAc()
If [Kont].Value <> "" Then GoTo 10:
MsgBox "Referans Listesinde VERİ yoktur. Form açılamaz"
Exit Sub
10:
        ListeTransfer.Show
End Sub

şeklinde düzenler ve

b _ Private Sub CommandButton2_Click()
makrosunda ise

Kod:
For i = 0 To k - 1
    MA = Me.Secim.List(i)
        With Application
            .ExecuteExcel4Macro "RUN(""" & MA & """)"
             MA = ""
        End With
Next i

düzenlemesini yaparsınız.
 
Destek için teşekkürler, tam istediğim şekilde açıklama olmuş, ekli uyarıyı neden verir ?
 

Ekli dosyalar

  • Capture.jpg
    Capture.jpg
    9.4 KB · Görüntüleme: 4
Makro4 ile çalıştırıldığından
1 - yazılan makronun bitiş komutu yoktur. (VBA daki End Sub yada makro4 deki DÖN())
2 - ya da makro komutları içerisinde başka bir satıra git diye bir komut vardır. o satıra gider ama o satırdan sonra bitiş komutuna yönlenme yoktur... Yani makro4 den bahsedersek git(A25) gibi bir komutla ( ya da VBA da goto a: gibi bir komutla) ilgili satıra yönlenir ve o satırdan aşağıdaki satırları çalıştırmaya başlar. O satırların sonunda bitiş komutu yoktur..

Sizin kodları görmek lazım..
 
Makro4 ile çalıştırıldığından
1 - yazılan makronun bitiş komutu yoktur. (VBA daki End Sub yada makro4 deki DÖN())
2 - ya da makro komutları içerisinde başka bir satıra git diye bir komut vardır. o satıra gider ama o satırdan sonra bitiş komutuna yönlenme yoktur... Yani makro4 den bahsedersek git(A25) gibi bir komutla ( ya da VBA da goto a: gibi bir komutla) ilgili satıra yönlenir ve o satırdan aşağıdaki satırları çalıştırmaya başlar. O satırların sonunda bitiş komutu yoktur..

Sizin kodları görmek lazım..

Sadece aşağıdaki makro çalıştığında bu hatayı veriyor


Private Sub CommandButton2_Click()
Dim i As Integer, k As Integer
If Me.Secim.ListCount = 0 Then GoTo 10:
Application.ScreenUpdating = False
k = Me.Secim.ListCount
For i = 0 To k - 1
[Start].Offset(i, 0) = i + 1
[Start].Offset(i, 1) = Me.Secim.List(i)
MA = Me.Secim.List(i)
With Application
.ExecuteExcel4Macro "RUN(""" & MA & """)"
MA = ""
End With
Next i
Application.ScreenUpdating = False
Unload Me
Exit Sub
10:
MsgBox "Seçim listeniz VERİ içermemektedir."
End Sub

Private Sub UserForm_Initialize()
Dim hücre As Range
For Each hücre In [ListeRef]
Me.Kaynak.AddItem hücre.Value
Next
End Sub
Private Sub Geri_Click()
If Me.Secim.ListCount > 0 And Me.Secim.ListIndex <> -1 Then
Me.Kaynak.AddItem Me.Secim
Me.Secim.RemoveItem Me.Secim.ListIndex
End If
End Sub
Private Sub Al_Click()
If Me.Kaynak.ListIndex <> -1 And Me.Kaynak.ListCount > 0 Then
Me.Secim.AddItem Me.Kaynak
Me.Kaynak.RemoveItem Me.Kaynak.ListIndex
End If
End Sub
Sub test()
Dim MA As String, i As Integer, k As Integer
On Error Resume Next
If [Start].Value = "" Then Exit Sub
k = Application.WorksheetFunction.CountA([Yeni])
For i = 1 To k
If [Start].Offset(i - 1, 1).Value <> "" Then
MA = [Start].Offset(i - 1, 1).Value
With Application
.ExecuteExcel4Macro "RUN(""" & MA & """)"
MA = ""
End With
End If
Next
End Sub
 
selam,
bu kodlar benim kodlar zaten..
gelen mesaj ise bu kodlarla birlikte çalıştırılan makrolarınızdan kaynaklanmaktadır. Sizin KENDİ makrolarınızı Makro4 komutu ile çalıştırıyor. Gelen mesaj da Makro4 mesajı. Yani hatayı sizin KENDİ kodlarınızda arayın derim...
 
Geri
Üst