• DİKKAT

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

Multipage Sorunu

Katılım
21 Eylül 2007
Mesajlar
18
Excel Vers. ve Dili
2000 Türkçe
Merhabalar.
Bir Form oluşturdum ve içine bir adet multipage yerleştirdim, içindede 4 tane page var ve iki tanesinde frameler var. formda bul komutunu veya temizle komutunu kullandığımda "excel çalışmayı durdurdu deyip" hata veriyor ve kapanıyor. ama sil ve temizle komutları içindeki pagelere ait framelerin içindeki texlerin komutlarını silince ozaman sorun olmuyor.
sanırım pagelerin içindeki frameleri okumakta zorlanıyor.ama sorunsuzca bu framelerin içindeki textlerden kayıt yapabiliyorum. Lütfen yardımlarınız bekliyorum.
 
Başka bir page'ye Yani aktif olamayan page'ye herhangi bir nesneye setfocus yaptıysanız hata oluşur.Bu durumu kontrol edin .Bundan değilse dosyanız örnek olarak ekleyin.Hatalı bir kod yazmışsınızdır o zaman.:cool:
 
İlginiz için teşekkürler. Sorunun neden kaynaklandığını buldum.ama çözümü bulamadım.Şöyle ki; formun başındaki çarpı butonunu (kapat butonu) pasif yapmak için aşağıdaki kodu eklemiştim.


Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
MsgBox "Kapat Butonunu Kullanınız.", vbCritical, Application.UserName
End If
End Sub



'çarpı butonu pasif oldu olmasına ama bu sorun ortaya çıktı.ilginç yanı bu kodu silmeme rağmen düzelme olmadı. Ne yapabilirim acaba.
 
İlginiz için teşekkürler. Sorunun neden kaynaklandığını buldum.ama çözümü bulamadım.Şöyle ki; formun başındaki çarpı butonunu (kapat butonu) pasif yapmak için aşağıdaki kodu eklemiştim.

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
Cancel = True
MsgBox "Kapat Butonunu Kullanınız.", vbCritical, Application.UserName
End If
End Sub


'çarpı butonu pasif oldu olmasına ama bu sorun ortaya çıktı.ilginç yanı bu kodu silmeme rağmen düzelme olmadı. Ne yapabilirim acaba.

Yazdığınız sorunun bununla alakalı olduğunu düşünmüyorum. Sorun, bul ve temizle işleminde kullandığınız kodlarla ilgili gibi duruyor. Kesin yanıt için bu iki işleme ait kodları yazmanızı öneririm.
 
4. page deki framelerin içindeki texboxları frameden çıkarıp page nin içine atınca sorun ortadan kalkıyor.

Temizle butonunun kodlarını şöyle kullanıyorum.

Private Sub cmdtemizle_Click()

Adı.Value = ""
TxtBirimi.Value = ""
TxtÜnv.Value = ""
TxtKS.Value = ""
TxtKD.Value = ""
TxtKHA.Value = ""
TxtEM.Value = ""
TxtGA.Value = ""
TxtEG.Value = ""
TxtNSA.Value = ""
TxtTET.Value = ""
TxtTET2.Value = ""
TxtAHKT.Value = ""
TxtGBT.Value = ""
TxtEGBirimi.Value = ""
TxtEGÜnv.Value = ""
TxtEGKS.Value = ""
TxtEGKD.Value = ""
TxtEGKHA.Value = ""
TxtEGEM.Value = ""
TxtEGGA.Value = ""
TxtEGEG.Value = ""
TxtAEOG.Value = ""
TxtİBirimi.Value = ""
TxtİÜnv.Value = ""
TxtİKS.Value = ""
TxtİKD.Value = ""
TxtİKHA.Value = ""
TxtİEM.Value = ""
TxtİGA.Value = ""
TxtİEG.Value = ""
TxtİNSA.Value = ""
TxtİTET.Value = ""
TxtİTET2.Value = ""
TxtİAHKT.Value = ""
TxtİGBT.Value = ""
TxtİEGBirimi.Value = ""
TxtİEGÜnv.Value = ""
TxtİEGKS.Value = ""
TxtİEGKD.Value = ""
TxtİEGKHA.Value = ""
TxtİEGEM.Value = ""
TxtİEGGA.Value = ""
TxtİEGEG.Value = ""
TxtİAEOG.Value = ""
TxtGUT.Value = ""
TxtGUS.Value = ""
TxtGBİT.Value = ""
TxtTYTS.Value = ""
TxtKY.Value = ""
TxtGY.Value = ""
TxtGMN.Value = ""
TxtGS.Value = ""
TxtGBT2.Value = ""
TxtEKD.Value = ""
TxtEKHA.Value = ""
TxtEEMük.Value = ""
TxtEGAyl.Value = ""
TxtEEG.Value = ""
TxtYKD.Value = ""
TxtYKHA.Value = ""
TxtYEMük.Value = ""
TxtYGAyl.Value = ""
TxtYEG.Value = ""
TxtYGT.Value = ""
TxtYKY.Value = ""
TxtYTT.Value = ""

End Sub


Buda BUL komutu için kullandıklarım

Private Sub cmdbul_Click()
Dim bak As Range
For Each bak In Range("B1:B" & WorksheetFunction.CountA(Range("B1:B65000")))
If StrConv(bak.Value, vbUpSayfa1Case) = StrConv(Adı.Value, vbUpCase) Then
bak.Select


Adı.Value = ActiveCell.Offset(0, -1).Value
TxtBirimi.Value = ActiveCell.Offset(0, 0).Value
TxtÜnv.Value = ActiveCell.Offset(0, 1).Value
TxtKS.Value = ActiveCell.Offset(0, 2).Value
TxtKD.Value = ActiveCell.Offset(0, 3).Value
TxtKHA.Value = ActiveCell.Offset(0, 4).Value
TxtEM.Value = ActiveCell.Offset(0, 5).Value
TxtGA.Value = ActiveCell.Offset(0, 6).Value
TxtEG.Value = ActiveCell.Offset(0, 7).Value
TxtNSA.Value = ActiveCell.Offset(0, 8).Value
TxtTET.Value = ActiveCell.Offset(0, 9).Value
TxtTET2.Value = ActiveCell.Offset(0, 10).Value
TxtAHKT.Value = ActiveCell.Offset(0, 11).Value
TxtGBT.Value = ActiveCell.Offset(0, 12).Value
TxtEGBirimi.Value = ActiveCell.Offset(0, 13).Value
TxtEGÜnv.Value = ActiveCell.Offset(0, 14).Value
TxtEGKS.Value = ActiveCell.Offset(0, 15).Value
TxtEGKD.Value = ActiveCell.Offset(0, 16).Value
TxtEGKHA.Value = ActiveCell.Offset(0, 17).Value
TxtEGEM.Value = ActiveCell.Offset(0, 18).Value
TxtEGGA.Value = ActiveCell.Offset(0, 19).Value
TxtEGEG.Value = ActiveCell.Offset(0, 20).Value
TxtAEOG.Value = ActiveCell.Offset(0, 21).Value
TxtİBirimi.Value = ActiveCell.Offset(0, 22).Value
TxtİÜnv.Value = ActiveCell.Offset(0, 23).Value
TxtİKS.Value = ActiveCell.Offset(0, 24).Value
TxtİKD.Value = ActiveCell.Offset(0, 25).Value
TxtİKHA.Value = ActiveCell.Offset(0, 26).Value
TxtİEM.Value = ActiveCell.Offset(0, 27).Value
TxtİGA.Value = ActiveCell.Offset(0, 28).Value
TxtİEG.Value = ActiveCell.Offset(0, 29).Value
TxtİNSA.Value = ActiveCell.Offset(0, 30).Value
TxtİTET.Value = ActiveCell.Offset(0, 31).Value
TxtİTET2.Value = ActiveCell.Offset(0, 32).Value
TxtİAHKT.Value = ActiveCell.Offset(0, 33).Value
TxtİGBT.Value = ActiveCell.Offset(0, 34).Value
TxtİEGBirimi.Value = ActiveCell.Offset(0, 35).Value
TxtİEGÜnv.Value = ActiveCell.Offset(0, 36).Value
TxtİEGKS.Value = ActiveCell.Offset(0, 37).Value
TxtİEGKD.Value = ActiveCell.Offset(0, 38).Value
TxtİEGKHA.Value = ActiveCell.Offset(0, 39).Value
TxtİEGEM.Value = ActiveCell.Offset(0, 40).Value
TxtİEGGA.Value = ActiveCell.Offset(0, 41).Value
TxtİEGEG.Value = ActiveCell.Offset(0, 42).Value
TxtİAEOG.Value = ActiveCell.Offset(0, 43).Value
TxtGUT.Value = ActiveCell.Offset(0, 44).Value
TxtGUS.Value = ActiveCell.Offset(0, 45).Value
TxtGBİT.Value = ActiveCell.Offset(0, 46).Value
TxtTYTS.Value = ActiveCell.Offset(0, 47).Value
TxtKY.Value = ActiveCell.Offset(0, 48).Value
TxtGY.Value = ActiveCell.Offset(0, 49).Value
TxtGMN.Value = ActiveCell.Offset(0, 50).Value
TxtGS.Value = ActiveCell.Offset(0, 51).Value
TxtGBT2.Value = ActiveCell.Offset(0, 52).Value
TxtEKD.Value = ActiveCell.Offset(0, 53).Value
TxtEKHA.Value = ActiveCell.Offset(0, 54).Value
TxtEEMük.Value = ActiveCell.Offset(0, 55).Value
TxtEGAyl.Value = ActiveCell.Offset(0, 56).Value
TxtEEG.Value = ActiveCell.Offset(0, 57).Value
TxtYKD.Value = ActiveCell.Offset(0, 58).Value
TxtYKHA.Value = ActiveCell.Offset(0, 59).Value
TxtYEMük.Value = ActiveCell.Offset(0, 60).Value
TxtYGAyl.Value = ActiveCell.Offset(0, 61).Value
TxtYEG.Value = ActiveCell.Offset(0, 62).Value
TxtYGT.Value = ActiveCell.Offset(0, 63).Value
TxtYKY.Value = ActiveCell.Offset(0, 64).Value
TxtYTT.Value = ActiveCell.Offset(0, 65).Value

Exit Sub
End If
Next bak
MsgBox "Herhangi bir kayıt bulunamadı", , "Dikkat"
End Sub
 
Son düzenleme:
Merhaba,
Çok fazla text kullanmışsınız. Muhtemelen textlerden birini veya birkaçını gözden kaçırmışsınız. Kodda yazan textlerin userformda bulunup bulunmadığını, isimlerinin doğru yazılıp yazılmadığını kontrol edin.
Örneğin: TxtYTT.Value adlı text kodlarda geçiyor; ancak userformda bulunmuyorsa sıkıntı doğurabilir.
 
Haklısınız. ama bütün textleri kontrol ettim hepsi userformda var.textleri framelerden page nin içine atınca sorun olmuyo.frameleri okumuyo nedense.
 
Haklısınız. ama bütün textleri kontrol ettim hepsi userformda var.textleri framelerden page nin içine atınca sorun olmuyo.frameleri okumuyo nedense.
Frameyi okumama diye bir şey söz konusu değil. Sonuçta Frameye kod yazmıyorsunuz. Eklediğiniz kodlara bakarak hata bulmak mümkün değil. Kesin sonuç için dosyayı eklemelisiniz ya da tek tek kodları silerek makroyu çalıştırarak hatanın hangi kod satırından kaynaklandığını bulabilirsiniz.
 
Haklısınız. ama bütün textleri kontrol ettim hepsi userformda var.textleri framelerden page nin içine atınca sorun olmuyo.frameleri okumuyo nedense.

Hangi frame olduğu kodun içinde yok yani seçtirmiyorsunuz gibi ilk bakışta. Kod sayfa1 e gidiyor ama frame lerin bir ayrı adı var olmalı
 
Sorun tamamen çok fazla text ve kod kullanmammış.bir iki text silince veya 60-70 satırlık yukarıdaki sil komutu yerine 4-5 satırlık aşağıdaki sil komutunu kullanınca hiçbir sorun kalmadı.ilgilenen arkadaşlara çok teşekkür ediyorum.

Private Sub cmdtemizle_Click()
Dim txt As Control
For Each txt In Me.Controls
If TypeName(txt) = "TextBox" Then txt.Value = ""
If TypeName(txt) = "ComboBox" Then txt.Value = ""
Next

End Sub
 
text lerin locked=false ise silinmesini istiyorum.bunu yukarıdaki koda nasıl ekleyebilirim acaba.
 
text lerin locked=false ise silinmesini istiyorum.bunu yukarıdaki koda nasıl ekleyebilirim acaba.
Merhaba,
Kod:
Private Sub cmdtemizle_Click()
Dim txt As Control
For Each txt In Me.Controls
If TypeName(txt) = "TextBox" And txt.Locked = False Then txt.Value = ""
If TypeName(txt) = "ComboBox" Then txt.Value = ""
Next
End Sub
 
Merhaba,
Kod:
Private Sub cmdtemizle_Click()
Dim txt As Control
For Each txt In Me.Controls
[COLOR="Yellow"]If TypeName(txt) = "TextBox" And txt.Locked = False [/COLOR]Then txt.Value = ""
If TypeName(txt) = "ComboBox" Then txt.Value = ""
Next
End Sub


Teşekkür Ederim.Ama hata verdi.dün gece sabaha kadar bu formülle uğraştım ama sonuç alamadım.Yardımınızı bekliyorum.
 
Teşekkür Ederim.Ama hata verdi.dün gece sabaha kadar bu formülle uğraştım ama sonuç alamadım.Yardımınızı bekliyorum.
:cool:
Önce textbox olup olmadığına bak.:cool:
Kod:
If TypeName(txt) = "TextBox" Then
    If txt.Locked = False Then txt.Value = ""
End If
 
:cool:
Önce textbox olup olmadığına bak.:cool:
Kod:
If TypeName(txt) = "TextBox" Then
    If txt.Locked = False Then txt.Value = ""
End If

Çok Teşekkür Ederim.Harikasınız.Sonunda oldu.Bir sürü gereksiz koddan kurtulmuş oldum.

Private Sub cmdtemizle_Click()
Dim txt As Control
For Each txt In Me.Controls
If TypeName(txt) = "TextBox" Then If txt.Locked = False Then txt.Value = ""
If TypeName(txt) = "ComboBox" Then txt.Value = ""

Next

End Sub
 
İmlecin hangi textbox veya combobox ın üzerindeyse onun renginin değişmesi için yukarıdakine benzer kısa bir kod varmıdır acaba.Formda aşağıdaki gibi bir kod buldum ama bunu her textbox ve combobox için yazarsam çok uzun bir liste ortaya çıkacak.


Private Sub İT_Enter()
İT.BackColor = &HFF0000
End Sub
Private Sub İT_Exit(ByVal Cancel As MSForms.ReturnBoolean)
İT.BackColor = &H80000001

Private Sub ComboBox3_Enter()
ComboBox3.BackColor = &HFF0000
End Sub
Private Sub ComboBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
ComboBox3.BackColor = &H80000001
End Sub
 
Bu tip durumlarda class modül kullanmak gerekecektir. Ancak hem combobox hemde textbox kullanmak ayrı ayrı class modül oluşturulmasını gerektirdiğinden biraz sıkıntılı bir durum oluşturur. Ayrıca class modülde "enter" ve "exit" olaylarıda bulunmadığından ilgili kodları mousedown ve keydown olaylarına yazmak gibi bir zorunlulukta ortaya çıkar.

Benim görüşümü sorarsanız, size bir avantaj getirmeyecek bu uygulamadan vazgeçin. Ancak yinede bir uygulama görmek isterseniz ben geçmişte hazırladığım bir örnek uygulamayı akşam buraya eklerim.

Bu tip durumlarda ben, kodlamayı kolaylaştırmak adına textbox yerinede showdropbuttonwhen özelliğini never yaparak combobox kullanıp, isimlerinide ardışık gidecek şekilde düzenlerim. Böylece kısa bir döngü ile işlemleri yapmak büyük kolaylık getirecektir.
 
Çok fazla kod girmek programı ya yavaşlatıyor yada anlamsız hatalar vermesine neden oluyor.örnek bi çalışma eklerseniz sevinirim. Yardımınız için çok teşekkürler.
 
solda gördüğünüz nesnelerde comboboxtır.
Onlara Levent beyin dediği şekilde propertiesten özelliği değiştirdim.
Class modüle ile yaptığım uygulama aşağıdadır.:cool:
Ekli dosyayı inceleyiniz.:cool:
 

Ekli dosyalar

Bende bir örnek hazırlamıştım. Ancak Evren bey benim hazırladığım mantıkla birebir aynı örneği hazırlamış dolayısıyla tekrarlamaya gerek yok.

Bu uygulama aynı zamanda api kullanılarakta yapılabiliyor. Bende farklı bir örnek olarak arşivine almak isteyen üyelerimiz için hazırladığım bu dosyayı ekliyorum. Apili çözüm her nesne için uygulanabiliyor bunu göstermek amacıyla dosyada textbox ve comboboxlardan oluşan bir arayüze uygulanmıştır. Ayrıca comboboxlar seçildiğinde kendiliğinden açılmasını sağlayan (dropdown işlemi) ilavede yapılmıştır.

Not: Eğer formda başka api uygulamaları mevcutsa bazen bu kodlar hataya neden olarak dosyanın kapanmasına neden oluyor. Bu sebeple ben eğer kullanacaksam her zaman Evren beyin örneğindeki yöntemi tercih ederim.
 

Ekli dosyalar

Geri
Üst