userformlar arası geçiş

Katılım
29 Mayıs 2006
Mesajlar
39
Arkadaşlar Merhabalar tekrar,

basit bir soru olacak ama basit test işlemlerinin kayıtlarını tutacak ve grafikleyecek 4 adet userform kullandığım bir macro yapıyorum,

sorunum bu 4 userform arasında geçiş yaparken sorun yaşamam..

örneğin form1 de işim bitti ana menü formunu açmak için

Private Sub CommandButton2_Click()

Unload Me
UserForm2.Show

End Sub

yöntemini sürekli olarak kullanıyordum fakat nedendir bilmiyorum bugun yaptığım macroda bu sebepten devamlı hata veriyor

UserForm3.Hide
UserForm2.Show

olarak yaptığımda eğer userform4 e geçeceksem o zaman once .hide yaptığım userform3 karşıma cıkıyor onu kapattıktan sonra istediğim forma ulaşıyorum...


-sizce unload me deki sorun neden kaynaklaıyordur?
-anlattığım durum için sorunsuz başka bir yöntem mevcut mudur?

okuyan ya da cevaplayan herkese teşekkürler...

not: vb kodlarını kod penceresi içinde nasıl yazabilirim soru içerisine?
 
Katılım
7 Ağustos 2006
Mesajlar
472
Excel Vers. ve Dili
EXCEL 2003 TÜRKÇE
unload me yerine unload userform4 diye kod yazın
İYİ GÜNLER
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,060
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
-sizce unload me deki sorun neden kaynaklaıyordur?
-anlattığım durum için sorunsuz başka bir yöntem mevcut mudur?
Sorun unload komutunda değil userform2.show satırındadır. userform2 nin initialize olayına yazdığınız kodlarda bir hata olabilir. Diğer sorunuzu biraz daha detaylandırırmısınız.
 
Katılım
29 Mayıs 2006
Mesajlar
39
Sayın leventm

diğer soru olarak demek isteğim userformlar arasında geçiş yaparken başka bir yöntem varsa (farklı kodlarla mesela..) yazar mısınız?


sanırım sorunu buldum ama emin olamıyorum bir kaç kere daha deniycem

sorun formlarda yukarıdaki X tusuna basılınca tekrar ana menüye donmesi için kod koymuştum unload me yapılınca bu kodu çalıştırıyor olabilir...
 
Katılım
5 Nisan 2007
Mesajlar
32
Excel Vers. ve Dili
2003 türkçe
Aynı sıkıntı bende de var ama aşamıyorum..

Arkadaşlar bende ilk defa bu kadar basit bir şeyde takılıyorum.

Sayfa1 de oluşturduğum bir buton ile userformu açıyorum

Kod :

Sub Dikdörtgen1_Tıklat()
UserForm1.Show
End Sub

Açılan form üzerine yerleştirdiğim butona da kod olarak :

Private Sub CommandButton1_Click()
Unload Me
Sheets("Sayfa2").Select
End Sub

veya :

Private Sub CommandButton1_Click()
Unload UserForm1
Sheets("Sayfa2").Select
End Sub

kodları giriyorum. Sorun şu Sayfa2'ye gittiğinde form kapanmış gibi görünüyor. Ama bence kapanmıyor çünkü Sayfa2 de mause tekeri işlev görmüyor. Sayfada bulunan kaydırma çubuğu çalışmıyor. Ancak makrosuz veya butonsuz olarak Sayfa1 e gidip tekrar Sayfa2 ye döndüğümde herşey normale dönüyor. (Bu hamleyi kod ile yaptığımda işe yaramıyor). Normalde Hide/Show kodları ile yapıldığında bu tür hatalar verir. Ama unload me formu tamamen kapatan bir komut. Bu arada proje de yaklaşık 130 civarında form veya sayfa var dedim ki bunlar ile bir bağlantı olur bir şeyler birbirini tetikliyordur. Normal bomboş tertemiz bir excell açtım denedim yine olmuyor. Makro güvenlik ayarlarını düşürdüm yine olmadı. Yardımcı olabilirsiniz çok sevinirim.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,570
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Userformda başka kodlar durdurulmadan kapatmak istediğinizde bu olabilir. En sık olan; formda tarih saat gösterirken kapatmak istediğinizde saati durduracak kod eklenmediyse excelde çalışmaya devam ediyor . Özellikle saniye göstergeli saatler sayfada ya da userformda olsun ; ciddi bir hafıza kullanıyor ve dosyanın hareketi de boş kalan yerin izin verdiği kadar ola-biliyor.

Bu kodlar hepimizin kullandığı açma kapama kodları ve sıkıntı bunun dışında aranmalı. Sorunuzda userformun elementleri hakkında bilgi yok.
 

GursoyC

Altın Üye
Katılım
7 Ocak 2015
Mesajlar
558
Excel Vers. ve Dili
Office 2024 Türkçe
Altın Üyelik Bitiş Tarihi
17-05-2028
not: vb kodlarını kod penceresi içinde nasıl yazabilirim soru içerisine?
Mesaj yazma penceresindeki diyez işaretine basarsanız (alt sıra, sağdan 3. düğme) ve kodlarınızı ][ arasına yazarsanız o kısmı kod penceresi şeklinde görürsünüz.
 
Katılım
5 Nisan 2007
Mesajlar
32
Excel Vers. ve Dili
2003 türkçe
Userformda başka kodlar durdurulmadan kapatmak istediğinizde bu olabilir. En sık olan; formda tarih saat gösterirken kapatmak istediğinizde saati durduracak kod eklenmediyse excelde çalışmaya devam ediyor . Özellikle saniye göstergeli saatler sayfada ya da userformda olsun ; ciddi bir hafıza kullanıyor ve dosyanın hareketi de boş kalan yerin izin verdiği kadar ola-biliyor.

Bu kodlar hepimizin kullandığı açma kapama kodları ve sıkıntı bunun dışında aranmalı. Sorunuzda userformun elementleri hakkında bilgi yok.
Evet size kesinlikle katılıyorum üstadım. Ancak özellikle paylaşımım da yeni boş bir excel de de yaptığımda aynı sorun ile karşılaştım. Ofis kurulumunu dahi yeniden yaptım. Ancak bir türlü sorun düzelmedi. Bu arada küçük bir ayrıntı eski kullandığım programımı güncelliyorum. Eski programımda aynı bilgisayarda bu kodlar sorunsuz bir şekilde çalışıyor tek cümle ile çıldırmak üzereyim.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,570
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Eski programımda aynı bilgisayarda bu kodlar sorunsuz bir şekilde çalışıyor tek cümle ile çıldırmak üzereyim.
Bazen hataların izahı çok teknik ve hepimizi aşan türden olabiliyor. Sinir tellerini kaybetmektense ; mümkünse programı kullanılan versiyonda yeniden inşa etmek belki de en sıkıcı ama genelgeçer çözüm. Zira versiyonlar arasında araç farkı da olabiliyor.

Sözgelimi ; .xls ile hazırlanmış bir programın makro kaydeden türden olarak ayarlanması gerekmiyor ama 2010 versiyonda bu ayar şart. Ayrıca birinde ribbonda görsel yok diğerinde var, bu da 2010 da sanki virüs var gibi ölümcül hata uyarısı veriyor. Bu yüzden eski versiyonun kodlarını yenisine kopyalamamak en doğrusu.

En iyisi microsoft'un icatlarını çok anlamaktan böyle durumlarda vazgeçmek ...
 
Katılım
5 Nisan 2007
Mesajlar
32
Excel Vers. ve Dili
2003 türkçe
Bazen hataların izahı çok teknik ve hepimizi aşan türden olabiliyor. Sinir tellerini kaybetmektense ; mümkünse programı kullanılan versiyonda yeniden inşa etmek belki de en sıkıcı ama genelgeçer çözüm. Zira versiyonlar arasında araç farkı da olabiliyor.

Sözgelimi ; .xls ile hazırlanmış bir programın makro kaydeden türden olarak ayarlanması gerekmiyor ama 2010 versiyonda bu ayar şart. Ayrıca birinde ribbonda görsel yok diğerinde var, bu da 2010 da sanki virüs var gibi ölümcül hata uyarısı veriyor. Bu yüzden eski versiyonun kodlarını yenisine kopyalamamak en doğrusu.

En iyisi microsoft'un icatlarını çok anlamaktan böyle durumlarda vazgeçmek ...
Üstadım diyorum ya en fazla bu kadar olur Ofis 2010 yüklü aynı kodlar aynı bilgisayarda BİLGİ İŞLEM adında kayıtlı bulunan dosyamda gayet sorunsuz çalışıyor ve bu dosyamı da 2010 sürümü ile yapmıştım. Kesinlikle o tarihten sonra format sürüm değiştirme vs. yapmadım. Program zamanla yetersiz kaldığı için yeniden yapayım dedim sıfırdan başladım. Artık son aşama olan ana formdan (ANA MENÜ) ilgili sayfalara aktarımlar kaldı. Bir türlü unload me kodu calışmıyor. Ya vazgeçtim boş bir excell dosyası açtım onda denedim olmadı. Ama eski BİLGİ İŞLEM de çalıyor. Yetmedi ofis i yeniden yükledim yine olmadı sürüm de değiştirmek istemiyorum zaten 2010 yüklü ve menüleri vs. iyice alıştım. Ne diyeyim dolanmadığım form sitesi yerli yabancı kalmadı. hatta anlam veremediği o kadar çok kod buldum ki sonuçta sayfa2 ye aktarıyor ama ne hikmet ise bir türlü kaydırma çubuğunu kitlemesini veya sayfanın donmasını engellemiyor.

son olarak şu saçmalığı bile denedim diyebilirim. :)

buton altına :

Private Sub CommandButton1_Click()
Unload Me
Call KAPAT
End Sub

Modüle ise :

Sub KAPAT()
Sheets("Sayfa2").Select
Call AKTAR
End Sub


Sub AKTAR()
Sheets("Sayfa1").Select
Sheets("Sayfa2").Select
End Sub

Makro ile gezinip duruyor ama yani mause ile yaptığım önceki sayfaya tıklayıp sonra mevcut sayfaya gelme işini kod aracılığı ile yaptım ve özellikle kodların tamamını butona yüklemedim ki çalışsın diye ama nerede.... yok olmuyor... Birde şöyle bir şey denedim hata aldım
Sub AKTAR()
Sheets("Sayfa1").Select
Unload Me
Sheets("Sayfa2").Select
End Sub

Bu kod ile unload me satırında hata veriyor demek ki ortada bir açık form yok eeee zaten tek form var bomboş excell arkadaş ne diyeyim unload me bana küsmüş mü ne :)
 
Son düzenleme:
Katılım
5 Nisan 2007
Mesajlar
32
Excel Vers. ve Dili
2003 türkçe
Arkadaşlar bende ilk defa bu kadar basit bir şeyde takılıyorum.

Sayfa1 de oluşturduğum bir buton ile userformu açıyorum

Kod :

Sub Dikdörtgen1_Tıklat()
UserForm1.Show
End Sub

Açılan form üzerine yerleştirdiğim butona da kod olarak :

Private Sub CommandButton1_Click()
Unload Me
Sheets("Sayfa2").Select
End Sub

veya :

Private Sub CommandButton1_Click()
Unload UserForm1
Sheets("Sayfa2").Select
End Sub

kodları giriyorum. Sorun şu Sayfa2'ye gittiğinde form kapanmış gibi görünüyor. Ama bence kapanmıyor çünkü Sayfa2 de mause tekeri işlev görmüyor. Sayfada bulunan kaydırma çubuğu çalışmıyor. Ancak makrosuz veya butonsuz olarak Sayfa1 e gidip tekrar Sayfa2 ye döndüğümde herşey normale dönüyor. (Bu hamleyi kod ile yaptığımda işe yaramıyor). Normalde Hide/Show kodları ile yapıldığında bu tür hatalar verir. Ama unload me formu tamamen kapatan bir komut. Bu arada proje de yaklaşık 130 civarında form veya sayfa var dedim ki bunlar ile bir bağlantı olur bir şeyler birbirini tetikliyordur. Normal bomboş tertemiz bir excell açtım denedim yine olmuyor. Makro güvenlik ayarlarını düşürdüm yine olmadı. Yardımcı olabilirsiniz çok sevinirim.
Sorunun Çözümünü buldum arkadaşlar. İlk ana menüyü çağıran kod olan

Sub Dikdörtgen1_Tıklat()
UserForm1.Show
End Sub

kodunu şu şekilde güncelleyince sorun ortadan kalktı

Sub Dikdörtgen1_Tıklat()
UserForm1.Show 0
End Sub

inşallah kimsenin başına böylesine basit bir şey için dellenmek gelmez :)
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,570
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
son olarak şu saçmalığı bile denedim diyebilirim. :)

buton altına :

Private Sub CommandButton1_Click()
Unload Me
Call KAPAT
End Sub

Modüle ise :

Sub KAPAT()
Sheets("Sayfa2").Select
Call AKTAR
End Sub


Sub AKTAR()
Sheets("Sayfa1").Select
Sheets("Sayfa2").Select
End Sub

Makro ile gezinip duruyor ama yani mause ile yaptığım önceki sayfaya tıklayıp sonra mevcut sayfaya gelme işini kod aracılığı ile yaptım ve özellikle kodların tamamını butona yüklemedim ki çalışsın diye ama nerede.... yok olmuyor... Birde şöyle bir şey denedim hata aldım
Sub AKTAR()
Sheets("Sayfa1").Select
Unload Me
Sheets("Sayfa2").Select
End Sub

Bu kod ile unload me satırında hata veriyor demek ki ortada bir açık form yok eeee zaten tek form var bomboş excell arkadaş ne diyeyim unload me bana küsmüş mü ne :)
Ciddi saçmalık olmuş, böyle hakikaten dolanır durur. :) Me konusu sıkıntı, neyi kasdettiğiniz konusunda şüphede anlaşılan.Bunun yerine kapatılacak formun adını yazmayı deneyin.

Kod:
Private Sub CommandButton1_Click()
Sheets("sayfa1").select   ' bu kapanırken gidilip durulması istenen sayfa, başka yazmayın.
unload userform1           ' formun adı ile kapanma
End Sub
Bunu commandbutton'a tıkladığınız yerde açılan yere yazın, diğer bütün saçmalık dediklerinizi silin zira onlar da çalışmaya devam edebilir. Bu şekilde tek ve kendi adını ve bitişini doğru yerde verecektir.

2 hatırlatma :
1- Eski ama aynı konu da olsa bitmiş bir soru altına devam etmeyin, yeni bir soru açın ve mümkünse sorunu örnekleyen bir çalışmayı basitçe hazırlayıp altına ekleyin. Yeni üye olduğunuzdan direk ekleyemezsiniz ama bir dış servera www.dosya.tc yükleyip linki burada paylaşın. Bu şekilde soru kaybolmaz ve müdahale eden çok kişi olur.
2- Kod yazarken
Kod:
...... kodlar....
[/ code]   (boşluğu kaldırın)

arasına yazın
 
Son düzenleme:
Üst