• DİKKAT

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

Runtime Error 1004,seçili sayfaya göre çalışma

  • Konbuyu başlatan Konbuyu başlatan preveze
  • Başlangıç tarihi Başlangıç tarihi
Katılım
29 Aralık 2010
Mesajlar
23
Excel Vers. ve Dili
MS Excel-2007-Türkçe
Merhaba arkadaşlar,elimdeki excel dosyasında 2 adet sayfa var,bu sayfalar personel listesinin bulunduğu Personel_Listesi ve İzin_Kartı sayfaları. Buna ilave olarak 1 adet UserForm ve form üzerinde 2 adet ComboBox var (Bu ComboBox'lar Personel_Listesi sayfasından bilgi çekiyor.),Visual Basic bölümünde kodları aşağıda yazdığım gibi yazıyorum ve çalıştırıyorum.Makroyu çalıştırdığımda o an eğer Personel_Listesi sayfasında bulunuyorsam yani aktif sayfa Personel_Listesi ise sorun olmadan çalışıyor.Fakat başka bir sayfadaysam "Runtime Error 1004-Range sınıfının Select yöntemi başarısız" hatası veriyor.Yeni bir UserForm üzerinde aynı şeyleri denedim fakat yine aynı şekilde hata verdi.Yardımlarınızı bekliyorum.

Private Sub ComboBox1_Change()
Worksheets("Personel_Listesi").Range("A2:A199").Select
Selection.Find(ComboBox1.Value).Select
txtSicil.Value = ActiveCell.Offset(0, 1).Value
txtKıdem.Value = ActiveCell.Offset(0, 2).Value
End Sub

Private Sub UserForm_Activate()
ComboBox1.RowSource = "Personel_Listesi!A2:A199"
ComboBox2.RowSource = "Personel_Listesi!E2:E5"
End Sub
 
nesnelerle çalışmak için nesneleri seçmek zorunda değiliz.
hatta çok ender durumlarda zorunlu olmadıkça seçilmemeli.


Kod:
Private Sub ComboBox1_Change()

Dim sayfa As Worksheet
Dim bul As Range

Set sayfa = Worksheets("Personel_Listesi")

On Error Resume Next
With sayfa.Range("A2:A199")
    Set bul = .Find(ComboBox1.Value)
End With
On Error GoTo 0

If bul Is Nothing Then
    MsgBox "Aranan değer bulunamadı. Kontrol ediniz!"
    Exit Sub
End If

txtSicil.Value = bul.Offset(0, 1).Value
txtKıdem.Value = bul.Offset(0, 2).Value

End Sub
 
not:
"Range" nesnesini seçebilmek için o Range'in bulunduğu Worksheet nesnesinin aktif olması gerekir.

hiç tavsiye etmemekle birlikte...

Worksheets("Personel_Listesi").Activate
Range("A2:A199").Select
Selection.Find(ComboBox1.Value).Select
 
Cevabınız için teşekkür ederim.Bana göre de nesneleri seçmek zorunda değiliz.Fakat bu durumda seçmek zorunda kaldım.Mesajımda;
Private Sub ComboBox1_Change() kodundan sonra
Worksheets("Personel_Listesi").Select kodunu ekleyince sorunum düzeldi.
 
Kusura bakmayın mesajımı yazdıktan sonra sizin mesajınızı görebildim.Kolay gelsin.
 
rica ederim.
2 no.lu mesajımdaki kodu tavsiye ediyorum.

aşağıdaki 2 kod da aynı sonucu üretir.

Kod:
Worksheets("Sheet1").Activate
Range("A1").Select
ActiveCell.Value = "Deneme"


Kod:
Worksheets("Sheet1").Range("A1").Value = "Deneme"

ikinci kod daha hızlıdır.
 
Teşekkür ederim yardımlarınız için.
 
Geri
Üst