Başka makroyu Userform da buton ile çağırma

Katılım
7 Ağustos 2007
Mesajlar
328
Excel Vers. ve Dili
excell 2003 - 2007
Arkadaşlar UserFormdaki makrolar aşağıdaki gibi. Yazdır1 ve Yazdır2 makrolarını çağırabiliyor, ancak SayfaAktar Makrosunu çağırdığında hata veriyor.


Private Sub UserForm_Initialize()
TrhBox = Format(Date)
TCBox.MaxLength = 11
SclBox.MaxLength = 13
End Sub
Private Sub isebaslama_Click()
Call Yazdır1
End Sub
Private Sub ig_Click()
Call Yazdır2
End Sub
Private Sub Aktar_Click()
Call SayfaAktar
End Sub

Sayfa Aktar makrosyu aşağıdaki gibi;
Private Sub SayfaAktar()
Set s1 = Sheets("İB")
Set s2 = Sheets("SSK İG")

s1.Range("B10:B13").Clear
pl = "POLİKLİNİK"

'ŞARTLI DALLANMA1
Rv = "REÇETE VERİLDİ"
Rvrld = Rv
Rvrlmd = ""
If RctBox.Value = Empty Then
RctBox = Rvrlmd
Else
RctBox = Rvrld
End If

'TARİH HESAPLAMA
trh1 = Format(Date + IstGsBox - 1)
trh2 = Format(Date + IstGsBox)
.........
........
devam ediyor.
bu makroyu user forma aktarır tanımlarsam normal şekilde çalışıyor. Ancak ayrı bir modül oluşturduğumda hata veriyor.
SayfaAktar makrosunun tamamını ek dosyada sundum incelemeniz için

Ekstra sorum olacak birde örneğin bir sayda bazı hücrelerin işlemlerini yapacak makroyu buton kullanmadan nasıl çalıştırabilirim. Diğer bir sorum ise sayı girilecek listboxlara harf yazmaması ve harf girilecek listboxlara ise rakam yazmaması, bunu uyarı vererek değil girmeye çalıştığımda yazmaması şeklinde yapmak istiyorum.

Yardımlarınız için teşekkürler.
 

Ekli dosyalar

Son düzenleme:

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,607
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
..UserFormdaki makrolar aşağıdaki gibi. Yazdır1 ve Yazdır2 makrolarını çağırabiliyor, ancak SayfaAktar Makrosunu çağırdığında hata veriyor.

Private Sub Aktar_Click()
Call SayfaAktar
End Sub

Sayfa Aktar makrosyu aşağıdaki gibi;
Private Sub SayfaAktar()
Set s1 = Sheets("İB")
Set s2 = Sheets("SSK İG")
s1.Range("B10:B13").Clear
pl = "POLİKLİNİK"
'ŞARTLI DALLANMA1
Rv = "REÇETE VERİLDİ"
Rvrld = Rv

Rvrlmd = ""
If RctBox.Value = Empty Then
RctBox = Rvrlmd
Else
RctBox = Rvrld
End If
........
devam ediyor.
bu makroyu user forma aktarır tanımlarsam normal şekilde çalışıyor. Ancak ayrı bir modül oluşturduğumda hata veriyor.
Ekstra sorum olacak birde örneğin bir sayda bazı hücrelerin işlemlerini yapacak makroyu buton kullanmadan nasıl çalıştırabilirim..
Merhaba,

Önce aklıma takılanları sorayım.
-Aktar_Click olayına Sayfa_Aktarın kodlarını doğrudan yazmak olası iken ayrı procedure oluşturmanızı,
- Rv = "REÇETE VERİLDİ"
Rvrld = Rv
şeklindeki atamayı Rvrld = "REÇETE VERİLDİ" şeklinde yapmayıp neden iki işleme gerek duyduğunuzu anlamadım.

Ayrı bir modül oluşturduğunuzda çalışmaması normaldir. Çünkü;modül tanımlanan textbox ları sayfada arar. UserFormda kullandığınız RctBox = Rvrld şeklindeki bir ifadeyi modulde Userform1.RctBox = Rvrld şeklinde kullanmalısınız. Ama buna niçin gerek duyduğunuzu da anlamadım.

Sayfda bazı hücrelerin işlemlerini yapacak makroyu buton kullanmadan çalıştırmak için sayfanın kod bölümündeki;Worksheet_Change, Worksheet_SelectionChange ve diğer olayları kullanabilirsiniz.
Hoşçakalın.
 
Katılım
7 Ağustos 2007
Mesajlar
328
Excel Vers. ve Dili
excell 2003 - 2007
reçete verildi konusunu ben de sizin ifade ettiğiniz gibi yazmıştım daha öncesinde ancak her halükarda reçete verildi olarak hücreye atama yapıyordu. Bende böyle bir çözüm yolu buldum.

Worksheet_Change denedim lakin çalışmayı kapatıp yeniden başlatmama rağmen değişiklik elde edemedim. Worksheet_SelectionChange bu komutu ise denemedim. Büyük ihtimal benim tanımlamam da bir eksiklik söz konusu olabilir.

Şöyleki;
Private Sub Worksheet_Change(ByVal Target As Range)
Set s2 = Sheets("DD")
ort1 = s2.Range("I2") & Chr(32) & s2.Range("C2") & Chr(32) & s2.Range("D2") & Chr(32) & s2.Range("E2") & Chr(32) & s2.Range("G2")
dusuk1 = s2.Range("I3") & Chr(32) & s2.Range("C3") & Chr(32) & s2.Range("D3") & Chr(32) & s2.Range("E3") & Chr(32) & s2.Range("G3")
ort2 = s2.Range("I4") & Chr(32) & s2.Range("C4") & Chr(32) & s2.Range("D4") & Chr(32) & s2.Range("E4") & Chr(32) & s2.Range("G4")
ort3 = s2.Range("I5") & Chr(32) & s2.Range("C5") & Chr(32) & s2.Range("D5") & Chr(32) & s2.Range("E5") & Chr(32) & s2.Range("G5")
dusuk2 = s2.Range("I6") & Chr(32) & s2.Range("C6") & Chr(32) & s2.Range("D6") & Chr(32) & s2.Range("E6") & Chr(32) & s2.Range("G6")
s2.Range("L2") = ort1
s2.Range("L3") = dusuk1
s2.Range("L4") = ort2
s2.Range("L5") = ort3
s2.Range("L6") = dusuk2
End Sub
makro bu ama nedense çalışmadı

yardımlarınız için teşekkürler
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,607
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
makro bu ama nedense çalışmadı
Merhaba,
Yukarıdaki kod için makro demişsiniz. Eğer bu kodlar bir modülde ise çalışmayacaktır. Bu kodların sayfanın kod bölümüne yazılması gerekir. Ayrıca sayfanın kod bölümüne yazılan kodlar sadece o sayfa için geçerlidir ve diğer sayfalarla ilgili işlemleri yapamazlar. Bazı özel tanımlamalarla diğer sayfalardan veri alınması olası ise de bunun yerine ThisWorkbook bölümünün kullanılması daha iyi olur.

Sonuç; Yukarıdaki kodları DD isimli sayfanızın kod bölümüne yazarsanız çalışır. Ben denedim çalıştı.:)
 
Son düzenleme:
Katılım
7 Ağustos 2007
Mesajlar
328
Excel Vers. ve Dili
excell 2003 - 2007
Teşekkürler analadım. Birde yukarıda da sormuştum arada kaynadı textbox lardaki bazı alanların sadece sayısal bazılarının ise harf olarak girilmesi gerekiyor. bu noktada nasıl bir sınırlandırma yöntemi kullanmalıyım.
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,607
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Merhaba
Sayı girişi için;
Kod:
Private Sub TextBox1_Change()
    If Not IsNumeric(TextBox1) Then SendKeys "{BS}"
End Sub
Harf girişi için;
Kod:
Private Sub TextBox2_Change()
If IsNumeric(TextBox2) Then SendKeys "{BS}"
End Sub
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,607
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Rica ederim.
İşinize yaradığına sevindim. :)
 
Üst