userformda makro ile başka makro çalıştırmak.

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Merhabalar, normal makro sayfasında başka bir makroyu çalıştırmak için satıra

Application.Run "Kitap1.XLS!Makro1" yazmak yeterli oluyor. Peki, userformda oluşturduğum makroyu, userformda hazırladığım başka bir makronun altına nasıl eklerim. Mesela, belirlediğim işlemleri yapsın, sonra da

Private Sub CommandButton1_Click()

makrosunu çalıştırsın, çalıştırılabilirse tabi ki..Yardımcı olursanız çok sevinirim..
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Kodun içine aşağıdaki gibi prosedürün adını yazmak yeterlidir.

Kod:
CommandButton1_Click
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
teşekkürler..

Teşekkür ederim. Çok sağol.
 
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
sayın üstadlarım;

benim konuyla ilgili bir sorunum var. aynı şekilde userform üzerindeki bir butonla 4 ayrı makroyu sırasıyla çalıştırmak ve formların güncellenmesini sağlamak istiyorum.
userformdaki commandbuton1'e aşağıdaki kodu yazdım

Kod:
Private Sub CommandButton1_Click()
Application.Run "izingöster()"
Application.Run "ceza_da_göster()"
Application.Run "ceza_mk_göster()"
Application.Run "hd_göster()"
End Sub
çalışması gereken makrolardan birinin kodunu da bilgi amacıyla aşağıya yazıyorum.

Kod:
Sub izingöster()
Set s1 = Sheets("izinsorgu")
Set s2 = Sheets("izintakip")
s2.[a6:j65536].ClearContents
If [c2] = "" Then
MsgBox "İzin Durumunu Görmek İstediğiniz Personeli Seçiniz."
Exit Sub
End If
For a = 3 To s1.[a65536].End(3).Row
If s1.Cells(a, "a") = s2.[c2] Then
C = C + 1
s2.Cells(C + 5, "a") = s1.Cells(a, "a")
s2.Cells(C + 5, "b") = s1.Cells(a, "b")
s2.Cells(C + 5, "c") = s1.Cells(a, "c")
s2.Cells(C + 5, "f") = s1.Cells(a, "f")
s2.Cells(C + 5, "g") = s1.Cells(a, "g")
s2.Cells(C + 5, "h") = s1.Cells(a, "h")
s2.Cells(C + 5, "I") = s1.Cells(a, "I")
s2.Cells(C + 5, "j") = s1.Cells(a, "j")
End If
Next
s2.[a6:j65536].Sort Key1:=s2.[j7]
If [a6] = 0 Then
MsgBox "İlgili Personele Ait İzin Kaydı Bulunmamaktadır.", vbOKOnly + vbInformation
Exit Sub
End If
End Sub
commandbuton1'e bastığımda kodlar sırasıyla çalışıyor ancak
Kod:
If [c2] = "" Then
MsgBox "İzin Durumunu Görmek İstediğiniz Personeli Seçiniz."
Exit Sub
kodu gereği bana msgbox ile uyarı veriyor. yani c2 hücresinde doğru isim olmasına rağmen bu şekilde uyarı veriyor ve hiç bir sayfada güncelleme yapmıyor. yukarıda yazdığım 4 makronun hepsi farklı sayfalarda. acaba sorun bundan mı kaynaklanıyor? bu şekilde anasayfa üzerinden (yani ilgili sayfalara hiç gitmeden) tek buttonla güncelleme yapmam mümkün değil mi? yada gözden kaçırdığım veya bilmediğim başka bir nokta mı var?? yardımlarınızı bekliyorum.. herkese teşekkürler..

saygılar..
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Kod:
If [c2] = "" Then
Yukarıdaki satıra aşağıdaki mavi renkli satırı ilave edin.

Kod:
If [B][COLOR=blue]s1.[/COLOR][/B][c2] = "" Then
 
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
Sayın leventm;

ilginize ve yardımınıza teşekkürler, sorunum çözüldü. ancak bir şey daha sormak istiyorum. tüm kodlarda düzeltmeyi yaptım. aşağıdaki kod sonucunda da;

Kod:
If s2.[a6] = 0 Then
MsgBox "İlgili Personele Ait İzin Kaydı Bulunmamaktadır.", vbOKOnly + vbInformation
Exit Sub
msgbox ile doğru uyarıyı veriyor. fakat tamam'a tıkladıktan sonra yine aynı msgbox çıkıyor. yani tüm makroların (4 ayrı makro var) msgboxu ikişer defa çıkıyor.(yani dört makronun sonucu da yukarıdaki duruma uyuyorsa 4 msgbox görmem gerekirken ben 8 tane görüyorum) acaba döngü ile alakalı bir durummu var?

saygılar..
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aynı değişikliği aşağıdaki satır içinde yapın.

Kod:
If [a6] = 0 Then
Eğer hücre referansının önünde sayfa adını belirtmezseniz aktif sayfadaki hücre dikkate alınacaktır.
 
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
sayın leventm;

söylediğiniz değişikliği o satırda da yaptım. aşağıdaki gibi oldu.

Kod:
If s2.[a6] = 0 Then
MsgBox "İlgili Personele Ait İzin Kaydı Bulunmamaktadır.", vbOKOnly + vbInformation
Exit Sub
kodlarda problem yok, sorunsuz çalışıyor. ancak önlemeye çalıştığı msgbox un iki defa açılması. yani kod çalışıyor, sayfayı güncelliyor ve boş olduğunda msgbox açılarak "ilgili personele ait izin kaydı bulunmamaktadır." diyor ama sorun bunu iki defa söylemesi.. :) msgbox açılıyor, tamam diyorum, aynısını birdaha söylüyor, tekrar tamam diyorum, daha sonra ikinci makroya geçiyor ve onda da iki defa açılıyor msgbox ilgili personelin ceza kaydı yoktur diye mesela.. bu neden kaynaklanıyor olabilir? çözme imkanımız var mı?

saygılar.
 
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
sayın leventm;

kodlarda şöyle bir sorunu şimdi tespit ettim.

Kod:
Sub izingöster()
Set s1 = Sheets("izinsorgu")
Set s2 = Sheets("izintakip")
[U]s2.[a6:j65536].ClearContents[/U]
If s2.[c2] = "" Then
MsgBox "İzin Durumunu Görmek İstediğiniz Personeli Seçiniz."
Exit Sub
End If
For a = 3 To s1.[a65536].End(3).Row
If s1.Cells(a, "a") = s2.[c2] Then
C = C + 1
s2.Cells(C + 5, "a") = s1.Cells(a, "a")
s2.Cells(C + 5, "b") = s1.Cells(a, "b")
s2.Cells(C + 5, "c") = s1.Cells(a, "c")
s2.Cells(C + 5, "f") = s1.Cells(a, "f")
s2.Cells(C + 5, "g") = s1.Cells(a, "g")
s2.Cells(C + 5, "h") = s1.Cells(a, "h")
s2.Cells(C + 5, "I") = s1.Cells(a, "I")
s2.Cells(C + 5, "j") = s1.Cells(a, "j")
End If
Next
s2.[a6:j65536].Sort Key1:=s2.[j7]
If s2.[a6] = 0 Then
MsgBox "İlgili Personele Ait İzin Kaydı Bulunmamaktadır.", vbOKOnly + vbInformation
Exit Sub
End If
End Sub
bu makroyu bir butona atayarak çizelgenin kendi sayfasına koymuştum. forumda sizin bir örnekte yayımladığınız kodları kendime uyarladım. şimdi bu ve bunun ile aynı özellikleri taşıyan 4 tane sorgulama makrosunu yukarıda izah ettiğim şekilde tek bir commandbutonla çalıştırmak istiyorum ve çalıştırıyorum. ancak makro çalıştıktan sonra çizelgedeki satırları temizlemiyor. yani bir önceki sorguda mesela 4 satır kayıt yazıldıysa, ve bu sorguda 1 satır kayıt yazılıyor ve altındaki üç satırda daha önce yazılan kayıtlar görünüyor. çizelgenin bulunduğu sayfadaki butonla çalıştırdığımda makroyu böyle bir sorun olmuyor? umarım çok karışık değildir sorum? yardımınızı bekliyorum... :???: :???:

saygılar...
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Kod:
[U]s2.[a6:j65536].ClearContents[/U]
Yukarıdaki satır bunun için silmesi gerekir. Eğer silmiyorsa, s2 olarak atanan sayfa adına bir bakın hata olabilir.
 
Katılım
14 Ekim 2006
Mesajlar
408
Excel Vers. ve Dili
excel 2003 TR
sayın leventm;
evet silmesi gerekir ama silmiyor. s2 nin sayfa adını da kontrol ettim sıkıntı yok. dediğim gibi aynı makroyu atadığım sayfa üzerindeki butondan sorgulama yaptığımda sorunsuz çalışıyor ve siliyor, ama userformdaki butondan 4 makroyu çalıştırdığımda silmiyor, üstelik sadece bu değil diğer sayfalardaki verileri de silmiyor. yani atadığım diğer makrolarda da aynı sıkıntıyı gözlemledim. diğer üç makroyu silip, tek olarak da denedim sonuç aynı? sorun nerede olabilir acaba?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bu şekilde sebebi anlamak pek mümkün olmayacak gibi, dosyanızı eklermisiniz.
 
Üst