• DİKKAT

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

makrodaki arananı veri sayfası olarak nasıl yazabilirim

Erdinç FIRTINA

Altın Üye
Katılım
14 Şubat 2007
Mesajlar
400
Excel Vers. ve Dili
excel 2003 türkçe
Değerli Arkadaşlar,
Veri tablosu ile aranan ve aktarılan aynı sayfada olduğu için aşağıdaki makro ile aktarma yapılabiliyor.
oysa ben aranan adresini yani veri tablosunun bulunduğu sayfayı sabit tutmak, ancak farklı sayfalarda da ara-bul ve aktar makrosunun çalışmasını istiyorum.
makrodaki aranan adresini nasıl değiştirebilirim.
hatta veri tablosunun bulunduğu çalışma sayfası farklı olsa yine olabilir mi?

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



Sub AKTAR()
ARANAN = InputBox("AKTARILACAK İSMİ GİRİNİZ !")
If ARANAN = "" Or False Then Exit Sub
ARANAN = UCase(Replace(Replace(ARANAN, "i", "İ"), "ı", "I"))
If WorksheetFunction.CountIf([H:H], ARANAN) = 0 Then GoTo SON
[M2:R65536].ClearContents
SATIR = 1
For X = 2 To [F65536].End(3).Row
If UCase(Replace(Replace(Cells(X, "H"), "i", "İ"), "ı", "I")) = ARANAN Then
SATIR = SATIR + 1
Cells(SATIR, "M") = Cells(X, "F")
Cells(SATIR, "N") = Cells(X, "G")
Cells(SATIR, "O") = Cells(X, "H")
Cells(SATIR, "P") = Cells(X, "I")
Cells(SATIR, "Q") = Cells(X, "J")
Cells(SATIR, "R") = Cells(X, "K")

End If
Next X
MsgBox "AKTARMA İŞLEMİ TAMAMLANMIŞTIR.", vbInformation
Exit Sub
SON:
MsgBox "AKTARILACAK KAYIT BULUNAMAMIŞTIR.", vbExclamation
End Sub
 
sayfa ismini de bir Inputbox'a atayabilirsiniz.Ben kısaca şu şekilde yaptım.Sayfa isimlerini de büyük harfe dönüştürüp aratabilir,yanlış sayfa ismi yazıldığında döngüyü durdurabilirsiniz.Bunlar eski kodlar da zaten mevcut.

Sub AKTAR()
aranan = InputBox("AKTARILACAK İSMİ GİRİNİZ !")
sayfa = InputBox("SAYFA İSMİ GİRİNİZ !")
If aranan = "" Or False Then Exit Sub
aranan = UCase(Replace(Replace(aranan, "i", "İ"), "ı", "I"))
If WorksheetFunction.CountIf(Sheets(sayfa).[H:H], aranan) = 0 Then GoTo SON
[M2:R65536].ClearContents
SATIR = 1
For X = 2 To [F65536].End(3).Row
If UCase(Replace(Replace(Cells(X, "H"), "i", "İ"), "ı", "I")) = aranan Then
SATIR = SATIR + 1
Cells(SATIR, "M") = Cells(X, "F")
Cells(SATIR, "N") = Cells(X, "G")
Cells(SATIR, "O") = Cells(X, "H")
Cells(SATIR, "P") = Cells(X, "I")
Cells(SATIR, "Q") = Cells(X, "J")
Cells(SATIR, "R") = Cells(X, "K")
Cells(SATIR, "S") = Cells(X, "L")

'BU BÖLÜME VERİ TABANINIZIN GENİŞLİĞİ KADAR EKLEME YAPABİLİRSİNİZ.
End If
Next X
MsgBox "AKTARMA İŞLEMİ TAMAMLANMIŞTIR.", vbInformation
Exit Sub
SON:
MsgBox "AKTARILACAK KAYIT BULUNAMAMIŞTIR.", vbExclamation
End Sub
 
teşekkürler!!! ama sorunumu çözemedim

sayın bedersu,
düzenlemenizi denedim ama makro çalışmıyor hata veriyor. mümkünse ek dosyam üzerinden yardımcı olabilir misiniz?
yardımınız olursa çok sevinirim!!!
yardımlarınız için şimdiden teşekkürle!!!
 
ekteki dosyada gerekli düzenlemeler yapılmıştır.
 
yine de hata veriyor

sayın bedersu,
düzenlemeyi ben de öyle yapmıştım ama maalesef error veriyor.
herhalde bir yerde hata var diye düşünüyorum.
 
Ne hatası verdiğini yazar mısınız?Çünkü bende hatasız çalışıyor.Gönderdiğim dosya da mı hata verdi sizde?
 
Sayın bedersu,
belki de ben derdimi anlatamadım.
benim yapmak istediğim veri tablosunun bulunduğu VERİ sayfası sabit kalacak. Ben daha sonraki sayfalara yerleştirdiğim ara-bul-aktar butonuna bastığımda yani makroyu çalıştırdığımda butonun bulunduğu sayfaya aranan kişinin bulunduğu satır veya satırlar gelecek.

Ama bu şekilde butona bastığımda ise error veriyor.
hatalı satır olarak da;

If WorksheetFunction.CountIf(Sheets(sayfa).[H:H], aranan) = 0 Then

satırına yönlendiriyor. Error no 9
olarak gösteriyor.

işin doğrusu neden olduğunu ben de anlamadım.

Yardımlarınız için çok teşekkür ediyorum!!!
 
sayın şefkatim,

Benim yollamış olduğum kodlarda sayfa ismi değişken olarak tutulabiliyordu ama eğer siz değişken istemiyorsanız,anladığım kadarıyla da öyle,o halde sayfa isminin girildiği Inputbox'ı kaldıracağız ver sayfa yazan yerlerin hepsine "VERİ" yazacağız.Bu daha kolay diğerine nazaran.Sizin gönderdiğiniz hatanın sebebi ,Inputbox'a girdiğiniz sayfa isminin yanlış olmasından kaynaklanabilir.Veri değil de verı yazarsanız mesela bu hatayı verir.Çünkü kodlar o ismide bir sayfa bulamamıştır.Sayfa ismini doğru yazdığınızdan emin olun.Olmazsa kodları aşağıdaki gibi değiştirin.

Kod:
Sub AKTAR()
aranan = InputBox("AKTARILACAK İSMİ GİRİNİZ !")
'sayfa = InputBox("SAYFA İSMİ GİRİNİZ !")
If aranan = "" Or False Then Exit Sub
'If sayfa = "" Or False Then Exit Sub
aranan = UCase(Replace(Replace(aranan, "i", "İ"), "ı", "I"))
'sayfa = UCase(Replace(Replace(sayfa, "i", "İ"), "ı", "I"))
If WorksheetFunction.CountIf(Sheets("VERİ").[H:H], aranan) = 0 Then GoTo SON
[M2:R65536].ClearContents
SATIR = 1
For X = 2 To Sheets("VERİ").[F65536].End(3).Row
If UCase(Replace(Replace(Sheets("VERİ").Cells(X, "H"), "i", "İ"), "ı", "I")) = aranan Then
SATIR = SATIR + 1
Cells(SATIR, "M") = Sheets("VERİ").Cells(X, "F")
Cells(SATIR, "N") = Sheets("VERİ").Cells(X, "G")
Cells(SATIR, "O") = Sheets("VERİ").Cells(X, "H")
Cells(SATIR, "P") = Sheets("VERİ").Cells(X, "I")
Cells(SATIR, "Q") = Sheets("VERİ").Cells(X, "J")
Cells(SATIR, "R") = Sheets("VERİ").Cells(X, "K")
Cells(SATIR, "S") = Sheets("VERİ").Cells(X, "L")
'BU BÖLÜME VERİ TABANINIZIN GENİŞLİĞİ KADAR EKLEME YAPABİLİRSİNİZ.
End If
Next X
MsgBox "AKTARMA İŞLEMİ TAMAMLANMIŞTIR.", vbInformation
Exit Sub
SON:
MsgBox "AKTARILACAK KAYIT BULUNAMAMIŞTIR.", vbExclamation
End Sub
 
çok ama çok çok teşekkürler!!!

sayın bedersu,
çok kontrol edemedim ama ilk kontrolümde gördüğüm bir şey var. zannediyorum benim derdime gerçekten çözüm bulundu. size nasıl teşekkür edeceğimi bilemiyorum.
çok ama çok teşekkürler.
 
Geri
Üst