makro ile suz'de error 9 hatası

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,272
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
sayın ustadlarım
yapabildigimce ve burdan ogrendigim ,adapte edebildigimce makro ile
suzme kodları ile ( ekte bulunan dosyada) (5 gorunuyor ama) 25 ucak firmasının 3800 kadar ucusunun kilolara gore yuk ucretlerini listeleyen bir program yapmaya calıstım.
ornekte 0 sayfası ek masraf cizelgesi
sayfa1 süzme sonuclarını aldıgım sayfa
sayfalar 1,2,3,4,5 is (41 e kadar cıkabilecek)ucak sirket listeleri
ornegin agırlasmaması icin hepsini 25inci satırlarından itibaren sildim,sayfa1de combobox a (BUENOS AIRES) yazdıgınızda gelen bilginin
dokulmesi , yapmasını istedigim sey ve sayfalar yerindeyken de yapmakla birlikte, hem aslında hem bu ornekte error 9 hatasını naptımsa gecemedim listelemeyi dogru yapıyor ama hata verip programı actırıyor.
Yardımlarınızı istedigim konular:
1-error 9 hatasını nasıl duzeltebilirim
2-sayfalara ucakların kendi kodlarını yazmam gerek ( yani 1 yerine LH gibi) bu sekilde adlandırmak liste degistirmede kolaylık saglıyor
3-sayfa 1,2,3,4,5te en sagda awb ve thc birimleri , 0 sayfasındaki ozet
ek masraf listesinden geliyor, en ustteki ilk kutular +sayfa1!f4 ile gelip
bunun altındaki satırlar icin ; gelen ilk kutuları sag tık kopyala sonraki tum kutulara bag yapıstır seklinde getirdim. kopyala yapıstır yaparsam sacmalıyor. Bu sekilde data aktarmanın suzme fonksiyonuna zarar verip
vermedigini bilmiyorum
4-ucak sirketi sayfaları dısında alfabetik ad tasıyan baska sayfalar da olacak,mesela acenteler listesi .Bu durumda sayfa1e ucak sayfaları dısında bilgi gelmemesi icin ne yapmalıyım.
Cok fazla soru biliyorum,pesinen ozur ama iki haftadır error9 yuzunden dumur oldum yardımcı olursanız sevinirim
 
Katılım
3 Mart 2005
Mesajlar
571
Excel Vers. ve Dili
Excel 2000 Ing.
hata vermesinin sebebi şu satır..

For s = 1 To Worksheets.Count - 1

sayfa 6 numaralı sayfa olmadığı için hata veriyor
düzeltmek için ..

For s = 1 To Worksheets.Count - 2 yazman yeterli
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,272
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
Sayın isakarakus
İki hafta canımı cıkartan error9 u gecmenin bu kadar basit bi nedene dayandıgını gormek gercekten cok sasırtıcı oldu..Demekki inatlasmadan bilene sormak lazımmıs. Gonderdigim taslakta 2 yapınca calıstı ama asıl 21+ sayfalık programda yine aynı hatayı verince deneyerek 5 yaptım sorun kalmadı,tıkır tıkır satırları alıyor.
Gercekten cok tesekkur ederim

Bir fazla basagrısı olmazsa eger , sayfaların nosu yerine ucak kodu yazınca mesela
1,2,3,4,5 yerine AF,AZ,AS,OS,BA yazınca

For s = 1 To Worksheets.Count - 2
A = WorksheetFunction.CountA(Sheets("" & s).Range("B6:S500"))
For ara = 1 To A + 4
b = Sheets("" & s).Cells(ara, 5).Value
If b = ComboBox1.Value Then
c = c + 1

Kısmındaki A = WorksheetFunction.CountA(Sheets("" & s).Range("B6:S500"))
hata verip yine acıyor ki, ucak kodları halinde yazmak , sonradan kolay bulup degistirmek icin elzem gibi.
Ne yapabilirim sizce

Tekrar Tesekkur ederim
 
Katılım
3 Mart 2005
Mesajlar
571
Excel Vers. ve Dili
Excel 2000 Ing.
Anladığım kadarıyla sayfa isimleri değiştirmek istiyorsunuz.

Sayfalarda iki şekilde işlem yapabiliyoruz.

Sheets(1) 1. sayfa demek,
Sheets("1") adı 1 olan sayfa demek..


bu durumda işlem yaparken sayfaların isimleri ile değil de numaralarıyla işlem yapmalısınız..


[vb:1:cc455dd6d5]Private Sub ComboBox1_Click()
Range("D6:S23").ClearContents
c = 0
For s = 1 To Worksheets.Count - 2
A = WorksheetFunction.CountA(Sheets(s).Range("B6:B500"))
For ara = 1 To A + 4
B = Sheets(s).Cells(ara, 2).Value
If B = ComboBox1.Value Then
c = c + 1
Cells(c + 5, 4) = Sheets(s).Cells(ara, 2).Value
Cells(c + 5, 5) = Sheets(s).Cells(ara, 3).Value
Cells(c + 5, 6) = Sheets(s).Cells(ara, 4).Value
Cells(c + 5, 7) = Sheets(s).Cells(ara, 5).Value
Cells(c + 5, 8) = Sheets(s).Cells(ara, 6).Value
Cells(c + 5, 9) = Sheets(s).Cells(ara, 7).Value
Cells(c + 5, 10) = Sheets(s).Cells(ara, 8).Value
Cells(c + 5, 11) = Sheets(s).Cells(ara, 9).Value
Cells(c + 5, 12) = Sheets(s).Cells(ara, 10).Value
Cells(c + 5, 13) = Sheets(s).Cells(ara, 11).Value
Cells(c + 5, 14) = Sheets(s).Cells(ara, 12).Value
Cells(c + 5, 15) = Sheets(s).Cells(ara, 13).Value
Cells(c + 5, 16) = Sheets(s).Cells(ara, 14).Value
Cells(c + 5, 17) = Sheets(s).Cells(ara, 15).Value
Cells(c + 5, 18) = Sheets(s).Cells(ara, 16).Value
End If
Next ara
Next s
End Sub[/vb:1:cc455dd6d5]

bu şekilde çalışması lazım..
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,272
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
Sayın isakarakus
yukarıdaki kodları aynen kopyalarak 5 ucak olan taslak icine attım , mukemmel calıstı .21 ucaklık Asıl programa atınca da Worksheets.Count - 5 degisimiyle ve de sayfa adlarını da degistirerek calıstırdım hata vermedi, hersey guzel gibi.
İki sey farkettim, İLKİ sayfa1 e 20 ucagı eleyip diziyor ama 21ci ucagı hic bir sekilde gormuyor.İKİNCİ ise bir sayfa icinde birden fazla aynı yer olunca hepsini gormuyor.
bunun benim yazım hatamdan olupolmadıgını arastırıyorum (aratuşu kaydırıp sola dayanmadan mı yazdı yada karakter boy font farkı mı vardı da gormuyor diye ama baktım sorun yok gibi).Normal olarak 45 ucak sirketine kadar yukseltmek ve personelin onune tam ve dogru koymak gerekiyor ki onlar da satısını yanlıssız eksiksiz yapsın. Suna benziyor: bir manavda 45 cesit elma var ,43unu goruyorsunuz ama en ucuzları da kalan ikisi icinde ...ve alıcı yandaki manavdan alıyor bizde oldugu halde...Eh gunde 30 musteri bu yuzden yan manava giderse de olmaz:)
isin tuhafı, sayfa adları 1,2,3... iken bu sorun yok ama AF,AZ,TK...yapınca oldu
Bu konuda fikrinizi almak isterdim , nasıl kesin aldırabilirim diye.
Tum zahmetleriniz icin sonsuz tesekkur ederim
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,272
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
Sayın isakarakus
biraz once iyice kontrol ettigimde , sayfalara alfabetik ad verdikten sonra tum sayfaların suzulmedigi, bazılarını bi nedenle atladıgı hatta 21ci sayfanın tamamını gormedigini , comboboxun icindeki adı tamamen silince de 0 adlı sayfadan da
gelmemesi gereken duzensiz bilgiler getirdigini gordum. Yani olan tum sayfalarda geziyor ve gelmesi gerekenlerden bazılarını nedense atlıyor da.

Suzulmesi gereken sayfaları (sadece bunlara git bunlardan al gel seklinde) bi sekilde kesinlestirme sansımız varmı ? Yoksa ikinci cevabınızdaki gibi sayfalara (zorunlu olarak )no vermek mi en iyi cıkıs olur?

Bu program oturdugunda "coklu alternatiften bir ozellige gore hepsini suzme"bir cok is alanında kullanılabilir olur sanırım, bittiginde ornek dosyalar kısmına da gondermek istiyorum...Emlaktan nakliyata bir cok alanda ise yarayacaktır.

tesekkur ederim
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,585
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki kodu denermisiniz.

Kod:
Private Sub ComboBox1_Click()
    Application.ScreenUpdating = False
    Set S1 = Sheets("Sayfa1")
    SATIR = 5
    S1.[D6:S65536].ClearContents
        
        For X = 3 To Worksheets.Count Step 1
        A = WorksheetFunction.CountA(Sheets(X).[B6:B65536]) + 5
            
            For ARA = 6 To A
            B = Sheets(X).Cells(ARA, 2).Text
    
    If B = S1.ComboBox1.Value Then
    SATIR = SATIR + 1
    
    S1.Cells(SATIR, 4) = Sheets(X).Cells(ARA, 2).Text
    S1.Cells(SATIR, 5) = Sheets(X).Cells(ARA, 3).Text
    S1.Cells(SATIR, 6) = Sheets(X).Cells(ARA, 4).Text
    S1.Cells(SATIR, 7) = Sheets(X).Cells(ARA, 5).Value
    S1.Cells(SATIR, 8) = Sheets(X).Cells(ARA, 6).Value
    S1.Cells(SATIR, 9) = Sheets(X).Cells(ARA, 7).Value
    S1.Cells(SATIR, 10) = Sheets(X).Cells(ARA, 8).Value
    S1.Cells(SATIR, 11) = Sheets(X).Cells(ARA, 9).Value
    S1.Cells(SATIR, 12) = Sheets(X).Cells(ARA, 10).Value
    S1.Cells(SATIR, 13) = Sheets(X).Cells(ARA, 11).Value
    S1.Cells(SATIR, 14) = Sheets(X).Cells(ARA, 12).Value
    S1.Cells(SATIR, 15) = Sheets(X).Cells(ARA, 13).Value
    S1.Cells(SATIR, 16) = Sheets(X).Cells(ARA, 14).Value
    S1.Cells(SATIR, 17) = Sheets(X).Cells(ARA, 15).Value
    S1.Cells(SATIR, 18) = Sheets(X).Cells(ARA, 16).Value
    
    End If
    Next ARA
    Next X
    
    SONUÇ = WorksheetFunction.CountA(S1.[D1:D65536]) - 1
    If SONUÇ = 0 Then
    
    MsgBox "ARADIĞINIZ KRİTERE UYGUN KAYIT BULUNAMADI.", vbExclamation
    Application.ScreenUpdating = True
    Exit Sub
    End If
    
    MsgBox "LİSTELEME İŞLEMİ TAMAMLANMIŞTIR." & Chr(10) & Chr(10) & _
    "TOPLAM = " & SONUÇ & " ADET KAYIT BULUNMUŞTUR.", vbInformation
    Application.ScreenUpdating = True
End Sub
Not: Bu kodlama ile sayfa isimlerinide istediğiniz gibi değiştirebilirsiniz. Sadece dikkat etmeniz gereken tek nokta döngü içinde kullanılmayacak bir sayfa eklemek isterseniz "Sayfa1" isimli sayfanın solunda olması kodun sağlıklı çalışması açısından gereklidir.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,272
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
cok iyi bi sekilde calısıyor

Sayın isakarakus , Sayın COST CONTROL
Son vermiş oldugunuz kodlama bicimi ile , icinde zarar vermeyen kucuk degisiklikler de yapınca tam istedigim gibi hatasız ve mukemmel calıstı . Sayfa uzerindeki işe ait bilgileri kamufle edip ama dogasını bozmadan bir kopyasını yaratarak rar sıkıstırma 160kb ancak acınca 2,2 mb olarak ekte gonderiyorum.
Sanıyorum bu sekli ile bile bir cok arkadasımız kendi islerine adapte edebilir.
Son birkac rotus olarak , comboboxu tamamen silince sagındaki ulke acıklamasında #YOK cıkıyor. Duseyara ile sayfa altına (#yok ise "sunu yap" #yok degilse "sirket bilgileri" cıkartmaya calıstım. Ancak combobox tamamen bosken altta da #yok cıkıp durdu , duzeltemedim .

Sizin de son gorus , rotus yardımı ve fikirlerinizden sonra , excel ornekleri icine, ilgisini ceken tum arkadasların kullanabilmesi icin gondermeyi dusunuyorum.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,272
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
Sayın Ustadlar
Son anda aklıma geldi
Programı sayfa1de ve diger sayfalarda sifreleyince ki oyle olması gerekecek bozulma ve oynamalara engel olmak icin , sayfa uzerindeki suz'ler kilitleniyor
ayrıca listeleme de engellenmis oluyor.
Yani acık kod ile hersey guzel ama sifreleyince kendini bloke ediyor
Ne yapabilirim?
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,272
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
birden fazla özellige gore suzme

Sayın isakarakus , Sayın COST CONTROL
Bir özellige göre süzme nin yanısıra ;
Birden fazla özelliğe gore suzme ve 3500 satırdan tek bir satıra doğru olarak
indirgeme ile ilgili de ekte bulunan çalışmamı da sizin ve diger tüm arkadasların
ilgisine gönderiyorum.
Bunda da ufak bir problem olarak , sayfayı sifreleyince listeleme bloke oluyor.
Her ikisinde de sifre/bloke problemi de asılabilirse, sanırım kullanacak tum arkadas
lar kendi veri ve bicimleri ile de adapte edeceklerdir.

Bu iki calısma esnasında verdiginiz tum destek ve yonlendirmeleriniz icin sonsuz tesekkur ederim
 
Katılım
3 Mart 2005
Mesajlar
571
Excel Vers. ve Dili
Excel 2000 Ing.
Önce sayfanızı şifreleyin
şifreniz 123 olsun diyelim

Filtreleme kodlarınızın başına

[vb:1:5929383c87]Sheets("Sayfa1").Unprotect ("123")[/vb:1:5929383c87]

kodların bitimine de

[vb:1:5929383c87]Sheets("Sayfa1").Protect ("123")[/vb:1:5929383c87]


yazarsanız işinizi görecektir.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,272
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
Sayın isakarakus
Sayın COST CONTROL

Sifreleme konusu da sayın isakarakus'un tavsiye ettigi kodlama ile bitti ve benim konu'ma cok uygun bir program olarak ortaya cıktı,sorunsuz gayet sirin bi sekilde ve baya da hızlı ( o kadar ki , sayfa1 de comboboxa bir sehiri girerken daha harfler yazılırken son harfi beklemeden alel acele ben su kadar ucak buldum diyor
bu da ilk anda yanlıs mı yazdım durumuna sokuyor insanı,ama enterlayınca dogru bilgileri doker sekilde) calısıyor. Belki bu uyarı penceresini 2 -3 saniye geciktirecek bi yol olursa hissedilmeden bile calısacak.

Size , tum yardım ve onerileriniz icin cok ama cok tesekkur ederim simdiden 60 kusur sayfalık ve onların sutunu kadar irilesen bi program ortaya cıkarmama destek oldugunuz icin.

Sanırım artık gonul rahatlıgıyla ornekler kısmına atıp , diger excelci arkadasların
inceleyip ise yaradıgıdna kullanmasını saglamanın ve bu topici bitirmenin zamanı

Hersey icin sagolun
 
Katılım
27 Mayıs 2006
Mesajlar
89
Excel Vers. ve Dili
Excel 2000 - Tr
son halini de gönderirsen biz de sana teşekkür edeceğiz :)
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,272
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2024
Son hali ana menu de excel ornekler kısmında
bir ozellige gore listeleme
birden fazla ozellige gore listeleme olarak
dun ikisi aynı linkte beraber gonderildi.Ya ordan gun sırasında bakarak ya da bu adları aynen arama yaparak bulabilirsiniz. Ulasamazsanız yine burda not bırakın ama son durum orneklerinin burda yayınına izin veriliyormu bilmiyorum

Sayfalarda veri olması icin tekrar eden sayılar var , ama hepsi benzersiz sayı
olarak dusunulmeli .Orijinali su anda 70 sayfayı gecti
 
Üst