Çözüldü Özel Liste yi makro oluşturmada hata

Katılım
9 Eylül 2010
Mesajlar
855
Excel Vers. ve Dili
2016&2019&2021 TR
İyi akşamlar değerli hocalarım. Ekteki dosyada makro doğru çalışıyor ancak bu makroyu oluşturduktan sonra çalışma kitabı bozuluyor. Linkte verdiğim konudaki hataların aynısını alıyorum. Nette çözümüne baktım ancak sadece veri kurtarmayla ilgili kısıtlı sayıda bilgi buldum. Yeterli yabancı dilim de olmadığı için yabancı forumları okuyamadım. Forumda da özel sıralamayla ilgili çözümler var ancak orada yazılan kodları anlayıp kendi dosyama uyarlayacak seviyede değilim. Dosyadaki hatanın kaynağı özel liste karakter sayısının 256 olması mıdır? Eğer böyle ise farklı çözüm yolları var mıdır? Hiç bir çözüm yolu yoksa kodla bu sıralamayı yapabilir misiniz. Saygılarımla.
https://www.excel.web.tr/threads/istenilen-ruetbe-sinifina-goere-siralama.174555/
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Merhaba.

Aşağıdaki kod işinizi görüyor mudur?
Farklı durumlara göre deneyiniz. "Dosyanın yapısı bozuluyor" cümlesini biraz açar mısınız?
Rich (BB code):
Sub OZEL_SIRALAMA_BARAN()
    sonsat = Sheets("list").Cells(Rows.Count, 1).End(3).Row
    ActiveWorkbook.Worksheets("list").Sort.SortFields.Clear
    With ActiveWorkbook.Worksheets("list").Sort
        .SortFields.Add Key:=Range("I3:I" & sonsat), Order:=1, CustomOrder:= _
            "Şube Müdürü,Şube Müdür Yardımcısı,...................gibi uzayan listeniz................"
        .SortFields.Add Key:=Range("H3:H" & sonsat), Order:=1, CustomOrder:= _
            "İç Hizmetler,İaşe Sorumlusu,...................gibi uzayan listeniz................"
        .SortFields.Add Key:=Range("D3:D" & sonsat), Order:=1, CustomOrder:= _
            "Komiser,Kom. Yrd.,...................gibi uzayan listeniz................"
        .SortFields.Add Key:=Range("C2:C" & sonsat), Order:=1

        .SetRange Range("A2:Z" & sonsat): .Header = xlYes: .Apply
    End With
    ActiveWorkbook.Worksheets("list").Sort.SortFields.Clear
End Sub
 
Son düzenleme:
Katılım
9 Eylül 2010
Mesajlar
855
Excel Vers. ve Dili
2016&2019&2021 TR
Sıralama hata ve farklı kaydet e zorlama olayları çözüldü. Tekrar tekrar teşekkürler.
Cevap düzeltildi.
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Ben olsam; ....... "biraz abarttım galiba"......
Cevabımı değiştirdim.
 
Son düzenleme:
Katılım
9 Eylül 2010
Mesajlar
855
Excel Vers. ve Dili
2016&2019&2021 TR
#2
Merhaba.
Aşağıdaki kod işinizi görüyor mudur?
Farklı durumlara göre deneyiniz. "Dosyanın yapısı bozuluyor" cümlesini biraz açar mısınız?


aynı hatayı bende alıyorum ve ekli dosyadaki örnekteki gibi dosyayı kaydet dediğimde sürekli farklı kaydet e zorluyor.
 

Ekli dosyalar

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Ekran görüntüsünde altta bulunan link'e tıklar mısınız, ne çıkıyor karşınıza.
 
Katılım
9 Eylül 2010
Mesajlar
855
Excel Vers. ve Dili
2016&2019&2021 TR
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><logFileName>error119160_01.xml</logFileName><summary>'C:\Users\tuncer ÅŸow\Desktop\Åube List 2.xlsm' dosyasında hata algılandı</summary><removedRecords><removedRecord>Kaldırılan Kayıtlar: /xl/worksheets/sheet1.xml parçasından Sıralama</removedRecord></removedRecords></recoveryLog>

Hata bu hocam. Word de açtı chrome de açtırıp tekrar yükleyeyim. Türkçe karakterler hatalı gelmiş.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Belgenizdeki formülleri DEĞERe dönüştürerek dener misiniz?
Bu arada liste dışında sağ tarafta =EĞER(I11<>"";EĞER(SAĞDAN(KÜÇÜKHARF(G11);9)="tim amiri";MAK(W$2:W10)+1;"");"") gibi formüller var onları da SİLİN veya DEĞERe dönüştürün.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Ayrıca bir de kod'da aşağıdaki mavi kısmı eklemekte yarar var sanırım.
.SetRange Range("A2:Z" & sonsat): .Header = xlYes: .Apply
Zira üst tarafta alanları 3'üncü satırdan başlatırken alan olarak A2:Z & sonsat SET ediliyor. Ama başlığın olduğunu söylemiyoruz.
 
Katılım
9 Eylül 2010
Mesajlar
855
Excel Vers. ve Dili
2016&2019&2021 TR
Hocam bu da çözüm olmadı. Ancak koda şunu ilave edebilir miyiz. Gene bulunduğu dizinde aynı dosya adıyla kaydetsin. Hatta aynı dosya ile değiştirsin. Değiştirilsin mi dediğinde otomatik evet desin mümkün müdür. Yoksa kodlarda sorun yok. Gayet düzgün çalışıyorlar. Sadece farklı kaydete zorlaması can sıkıyor. Bunu yapsak bile açılışta gene hata verip dosya onarma ve kurtarma uyarısı verecek bu nedenle bu yol da çıkmaz a girdi. Çok teşekkürler Sn. Hocam.
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Ben FARKLI KAYDET'e zorlama rastlamadım, kod çalıştırılıp belge kapatıldıktan sonraki ilk açılışta ONARMA uyarısı geliyordu sadece.

Kod'daki End Sub satırının hemen üstüne aşağıdaki satır eklenince bu hata da kalmıyor, deneyiniz.
İlk cevabımdaki kodu da buna göre güncelledim.
ActiveWorkbook.Worksheets("list").Sort.SortFields.Clear
 
Katılım
9 Eylül 2010
Mesajlar
855
Excel Vers. ve Dili
2016&2019&2021 TR
Bu sefer oldu hocam ne hata uyarısı veriyor ne de farklı kaydetmeye zorluyor. Zihninize sağlık. Çok teşekkürler.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Önce bir hatırlatma;
belgenizde çalıştırdığınız kod varsa orada yapılmış olabilir, belgeniz açıldığında HESAPLAMA YÖNTEMİ ELLE şeklinde idi.
O şekilde bırakmanızı önermem.

Sorun ile ilgili olarak olayın mantığını anlatmaya çalışayım.
Excel, bir listeye sıralama uygulandığında, listenin sıralamaya tabi tutulduğunu ve buradaki sıralama kriterlerini bir anlamda aklında tutuyor
(sıralama öncesinde alanda filtre varsa, sıralamadan sonra filtrenin küçük ok işaretinin solunda sıralamaya ilişkin yine küçük bir ok işareti görünüyor).

Sizin belgeye gelince;
-- Diyelim ki elle sıralama yapıyoruz (bu durumda özel listenin önceden tanımlanmış olması gerekir),
kriter olarak da sütunlardan biri için bu özel listeyi seçiyoruz veya makro ile sıralama yapıyorsak yine bu özel listeyi kullanabiliyoruz. => sorun yok.
-- Elle sıralama yapılıyorsa ve özel liste kayıtlı değilse zaten kriter olarak özel listeyi kullanamıyoruz.
-- Sıralamayı makro ile yaparken, özel listeyi kod üzerinden verdiğimizde (bizim uygulamamız) sıralama yapılıyor ama excel bu sıralamayı hatırlamaya çalıştığında özel liste kayıtlı olmadığından bunu bulamıyor ve belirttiğiniz uyarı/hata oluşuyor.

İşte belge kapatılıp tekrar açıldığında. veriler "sıralamaya tabi tutulmuş mu, tutulmuşsa kriterleri ney" kontrolünü yaparken bu işlemin hata vermemesi için; sıralama makrosunun sonunda SIRALAMA YAPILDIĞINI UNUT anlamında olmak üzere, koda o satırı ekledik.
Umarım yanlış ifade etmedim.

Kolay gelsin.
 
Katılım
9 Eylül 2010
Mesajlar
855
Excel Vers. ve Dili
2016&2019&2021 TR
Çözümü verdiğiniz gibi sorunu da açıklamanız çok yerinde oldu hocam. Hala sorunu aramaya devam ediyor olacaktık. Ne kadar teşekkür etsem azdır. Allah gönlünüze göre versin.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Eyvallah Sayın @tukayf . Sağ olunuz.
Ayrıca; beğeni için Sayın @Korhan Ayhan 'a da teşekkürler.

Kolaylıklar dilerim.
 
Üst