• DİKKAT

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

TextBox'dan sayfa seçme

Katılım
23 Ekim 2007
Mesajlar
21
Excel Vers. ve Dili
Excel 2000
Arkadaşlar ardım ama istediğim kodları bulamadım. Bir formdan Textbox3'e seçmek istediğim sayfa isimlerini giriyorum. Çalışma Kitabımda o isimle sayfa var ise doğru seçiyor. Fakat Yanlış yazarsam hata veriyor. Bu Sorunu Nasıl aşabiliriz.

Exit Yordamına yazdığım kod şöyle


Kod:
Sheets(Textbox3.value).select
 
Merhaba,
Aklıma ilk gelen çözüm. Sayfa varsa seçer, yoksa işlem yapmaz.
For x = 1 To Sheets.Count
If Sheets(x).name= Textbox3.value Then
Sheets(x).Select
Exit Sub
End If
Next
 
Sayın leumruk cevabın için teşekkür ederim. Kodlarınızı denedim. Sayfa varsa doğru seçiyor. Yoksa Aynı sayfa seçili oluyor. Yazdığınız kodu şu şekilde kullandım ama olmadı. Bir mantık hatası yapıyorum ama nerede olduğunu çözemedim

Kod:
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox3.Value = TextBox1.Value & TextBox2.Value
If Len(TextBox2) < 3 Or Len(TextBox2) > 3 Then
    Cancel = True
End If

For x = 1 To Sheets.Count
If Sheets(x).Name = TextBox3.Value Then
    MsgBox ("Böyle Bir birim Kayıtlı Değil!"), vbCritical, Application.UserName
Sheets(x).Select
Exit Sub
End If
Next

VeriAl
End Sub

Yanlış birim kodu girildiği zaman(Textbox3.Value) yeni sayfa seçmiyor ama o koddan sonra VeriAl kodunu çalıştırıyor ve VeriAl makrosunun başında Sheets(Textbox3.value).Select kodu yazıldığı için hata veriyor.
 
Son düzenleme:
TextBox yerine ComboBox kullanıp UserForm_Initialize olayına da
Kod:
for i = 1 to sheets.count
combobox1.additem sheets(i).name
next i
combobox1.style = 2
yazarsanız bana kalırsa yanlış yazma konusunda daha net çözüm olmuş olur.

İyi çalışmalar.
 
Sayın Tarkan VURAL Hocam. Daha pratik olacağını düşündüğüm için Textbox1 den Kurum Kodunu, Textbox2 den Birim Kodunu Giriyorum. Textbox3 de daire ve birim kodlarını birleştiriyorum ve sayfa isimleri Daire Kodu+Birim Kodu'ndan oluşuyor. Haklısınız Combobox kullansam önerdiğiniz cevap kesin çözüm olurdu. Benim yapmak istediğim şekliyle bir çözüm üretemezmiyiz. Saygılarımla.
 
İllaki istediğiniz şekilde olsun derseniz arkadaşın yazdığı yanıt sizin işinizi görüyor olması gerek. Ama aslında çok zor olmaz. Kodları değiştirmekteki harcayacağınız zamandan çekiniyorsanız projeden TextBox1 nesnesini silip Yerine ComboBox1 nesnesi ekleyip nesne adını yine TextBox1 olarak yazabilirsiniz. Ama olayları ComboBox olayları olacaktır. Sadece takma adı TextBox1 olacak. Bilmem, siz bilirsiniz ama her iki türlü çalışma alternatifiniz var şu anda. İster Combo ile ister arkadaşın yazdığı kodlama ile.

İyi çalışmalar.
 
Kod:
If Sheets(x).Name = TextBox3.Value Then
satırında eşitlik yerine <> ile eşitsizlik aranması gerekmez mi ? Acaba hata bundan olabilir mi ?
 
Arkadaşlar belki acemice ama aşağıdaki gibi düzenledim sanırım oldu. Başka bir problem çıkarsa sizlerle yine paylaşacağım. Hepinize çok tesekkür ediyorum. Ellerinize sağlık

Kod:
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox3.Value = TextBox1.Value & TextBox2.Value
If Len(TextBox2) <> 3 Then
    Cancel = True
End If

For x = 1 To Sheets.Count
    If Sheets(x).Name = TextBox3.Value Then
        Sheets(x).Select
            VeriAl
         Exit Sub
    End If
Next

For x = 1 To Sheets.Count
    If Sheets(x).Name <> TextBox3.Value Then
        Sheets(x).Select
            MsgBox ("Bu Birim Kayıtlı Değil!"), vbCritical, Application.UserName
                TextBox2 = Empty
            TextBox2.SetFocus
        Exit Sub
    End If
Next
End Sub
 
Son düzenleme:
Merhaba,
İkinci bir döngü oluşturmanıza gerek yok, ayrıca kod mantığında bir hata var. Aşağıdaki kodu kullanmanız daha mantıklı olur:
Kod:
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox3.Value = TextBox1.Value & TextBox2.Value
If Len(TextBox2) < 3 Or Len(TextBox2) > 3 Then
    Cancel = True
End If

For x = 1 To Sheets.Count
If Sheets(x).Name = TextBox3.Value Then
Sheets(x).Select
VeriAl
Exit Sub
End If
Next
MsgBox ("Böyle Bir birim Kayıtlı Değil!"), vbCritical, Application.UserName
End Sub
 
Arkadaşlar altarnatif olarak size kısa bir kod form üzerini bir adet combobox1 yerleştirerek sayfalar arasında kolayca dolaşa bilirsiniz.

Private Sub ComboBox1_Change()
'seçtiğiniz sayfaya götürecek
Worksheets(ComboBox1.Text).Activate
End Sub

Private Sub UserForm_Initialize()
'Mevcut sayfalar ComboBox1'e yüklenecek
For Each sayfa In Worksheets

ComboBox1.AddItem sayfa.Name
Next
End Sub
 
selamlar

Arkadaşlar altarnatif olarak size kısa bir kod form üzerini bir adet combobox1 yerleştirerek sayfalar arasında kolayca dolaşa bilirsiniz.

Private Sub ComboBox1_Change()
'seçtiğiniz sayfaya götürecek
Worksheets(ComboBox1.Text).Activate
End Sub

Private Sub UserForm_Initialize()
'Mevcut sayfalar ComboBox1'e yüklenecek
For Each sayfa In Worksheets

ComboBox1.AddItem sayfa.Name
Next
End Sub


kodunuzu kendi formuma uyguladım..liste olarak çalışma sayfasındaki tüm sayfaları gösteriyor.O yönden güzel bir kod..
Lakin merak ettiğim birşey var.O sayfaları tıklayarak seçim yapma şansımız varmı,yani UserForm veya Excel çalışma sayfasını açabilirmiyiz..
selamalar..
 
düzeltme mesajı....
UserForm arkasında sayfayı çağırabiliyormuşuz,,
o zaman gereken kod,userformun minimize edilmesi !...
 
düzeltme mesajı....
UserForm arkasında sayfayı çağırabiliyormuşuz,,
o zaman gereken kod,userformun minimize edilmesi !...
Userformun propertiesinden ShowModal özelliğini false yaparsanız istediğiniz işlemi yine yapabilirsiniz.:cool:
 
Arkadaşlar orayı yazmayı unuttum kusura bakmayın hangi sayfada iseniz A1 hücresine çift tıklayarak başa dönebilirsiniz.

Private Sub ComboBox1_Change()
'seçtiğiniz sayfaya götürecek
Worksheets(ComboBox1.Text).Activate
End Sub

Private Sub UserForm_Initialize()
'Mevcut sayfalar ComboBox1'e yüklenecek
For Each sayfa In Worksheets

ComboBox1.AddItem sayfa.Name
Next
End Sub

Formun showModal özelliğini False yapın Thisworkbook in kod penceresinede bu kodu yazınız.Userform ile birlikte sayfalar arasında kolayca dolaşabilir işlem yapabilirsiniz.

'Hangi Sayfada iseniz A1 hücresine çift tıklayarak sayfa1'e dönebilirsiniz

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, [a1]) Is Nothing Then
Cancel = True
Sheets("Sayfa1").Select
End If
End Sub
 
Son düzenleme:
Sayın leumruk Çok haklısınız. İkinci birdöngüye gerçekten gerek yokmuş. Bir mantık hatasımı yapıyorum diye onu kastetmiştim. Msgbox komutunu yanlış yerde kullandığım için istediğim sonucu alamıyordum. Aslında cevap yazdıktan sonra farkettim ki doğru da çalışmıyor zaten. Sizin yazdığınız şekliyle istediğim oldu. Teşekkür ederim. Ellerinize sağlık. Cevap yazan tüm arkadaşlare ayrıca teşekkür ediyorum.
 
Sayın Altay3555, Sayın nadirornek, Sayın Evren Gizlen sizlere de ayrı ayrı ilginiz için teşekkür ederim. İşlerimin yoğunluğu nedeniyle pek zaman bulamadım. bugün sizlerin cevaplarını görünce gerçekten utandım. Özürümü kabul edin lütfen. Gerçekten sorularımıza o kadar hızlı cevaplar aldımki beni çok mutlu etti bu ilgi ve alaka.Tabi Tarkan Vural hocama ve Leumruk arkadaşımızada bir daha teşekkür etmek istiyorum. Hepiniz sağolun varolun.
 
Geri
Üst