ad çakışmasi ve çakışan adları tek tek silme güçlüğü

modoste

Altın Üye
Katılım
31 Mayıs 2008
Mesajlar
3,610
Excel Vers. ve Dili
Microsoft OFFİCE Ev ve İş 2019 TR
Altın Üyelik Bitiş Tarihi
18-03-2025
merhaba sayın hocalarım
daha önceleri sorudum bi sorumda ad çakışmasında neler yapılmalı diye ve hocalarımdan cevağlam şöyle gelmişti
tanımla / Ad ile adları tek tek siliceksin dendi
uyguladığım basit sayfalar(bi kaç addan oluşan) ama şimdi öyle bi çalışma elime ulaştı ki 10 dakikadır isim seçip siliyorum bitmek bilmiyo
tüm adları tek celsede silebilecek bi kolaylık var mı ?

bir diğer sorum bu ad çakışmaları ne ile oluşur yada 300 tane kadar ad çakışması nasıl oluşabilir.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,679
Excel Vers. ve Dili
Excel 2019 Türkçe
Kod:
Sub IsimleriSil()
    For i = 1 To ActiveWorkbook.Names.Count
        ActiveWorkbook.Names.Item(i).Delete
    Next
End Sub
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,417
Excel Vers. ve Dili
excel 2010
merhaba

hatalı tanımlı adların bulunduğu dosyada bunları temizlemek bazen sorun olur.
kod ile tanımlı ad silindiğinde silinmesini istemediğimiz tanımlı adlar olabilir.
alternatif kod.
Kod:
Sub T_Ad_Sil()
Dim ONAY As Byte
For Each adlar In ThisWorkbook.Names
    ONAY = MsgBox(adlar & vbCrLf & vbCrLf & _
    "Tanımlı Ad Silinsin mi?", vbInformation + vbYesNo)
    
    If ONAY = vbYes Then
        adlar.Delete
    ElseIf ONAY = vbNo Then
    End If
    Next
End Sub
 

modoste

Altın Üye
Katılım
31 Mayıs 2008
Mesajlar
3,610
Excel Vers. ve Dili
Microsoft OFFİCE Ev ve İş 2019 TR
Altın Üyelik Bitiş Tarihi
18-03-2025
sayın uzmanamele ve diğer hocalarım
bugün 3 sekmeden oluşan çalışma dosyamda çalışırken 2 sekmeden oluşan başka bi dosyadan sekmeleri kopyala özel yapıştır (benim açık sayfamı seçmişken) sayfa sonuna yapıştır dediğim anda yine ad çakışması uyarısı belirdi yaklaşık 50 enter dan sonra çalışma sayfası kullanılır hale geldi.

şimdi ben bu durumda ad çakışma hatalarının sebeplerini bilmediğimden basit soru sorcam
benim zaten 3 sekmemde bu sorun yoktu başka bi yerden 2 sekme kopyaladım ve bu hata belirtisi yine geldi

bu yazılan kodu nasıl yazacağımı detaylı olarak yazabilirmisiniz
hangi sekme açıkken kod yazıcam ve bu kod olayını tam bilemiyorum hep unutuyorum
yardımcı olurmusunuz.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,679
Excel Vers. ve Dili
Excel 2019 Türkçe
Ben daha önce rastlamadığım için soruyorum, ad çakışması, aynı isimden birden fazla olduğunda mı oluşuyor ? Eğer böyle ise belki bir kod yardımıyla halledilebilir.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,417
Excel Vers. ve Dili
excel 2010
merhaba

hamitcan bey, tanımlı ad çakışmasından kaynaklanıyor.
şöyle örnekleyeyim: deneme tanımlı adını $A$1 hücresi için oluşturduğumuzu varsayalım. bu durumda sayfayı kopyaladığımızda, kopyalanan sayfada da deneme tanımlı adı $A$1 hücre değeri için olacaktır. bu durumda aynı adı kullanmak istiyor musunuz diye sorar.

sizin önerdiğiniz kod bütün tanımlı adları siler, benim önerdiğim ise bu silme işlemini seçebilirsiniz.
bütün tanımlı adlar silindiğinde mesela yazdırma alanı da tanımlı olacağından onu da siler, oysa bunu silmek istemeyebiliriz.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,417
Excel Vers. ve Dili
excel 2010
sayın uzmanamele ve diğer hocalarım
bugün 3 sekmeden oluşan çalışma dosyamda çalışırken 2 sekmeden oluşan başka bi dosyadan sekmeleri kopyala özel yapıştır (benim açık sayfamı seçmişken) sayfa sonuna yapıştır dediğim anda yine ad çakışması uyarısı belirdi yaklaşık 50 enter dan sonra çalışma sayfası kullanılır hale geldi.

şimdi ben bu durumda ad çakışma hatalarının sebeplerini bilmediğimden basit soru sorcam
benim zaten 3 sekmemde bu sorun yoktu başka bi yerden 2 sekme kopyaladım ve bu hata belirtisi yine geldi

bu yazılan kodu nasıl yazacağımı detaylı olarak yazabilirmisiniz
hangi sekme açıkken kod yazıcam ve bu kod olayını tam bilemiyorum hep unutuyorum
yardımcı olurmusunuz.
merhaba

syn modoste, önerdiğim kodları bir standart modüle yazın ve kodu çalıştırın.
 

modoste

Altın Üye
Katılım
31 Mayıs 2008
Mesajlar
3,610
Excel Vers. ve Dili
Microsoft OFFİCE Ev ve İş 2019 TR
Altın Üyelik Bitiş Tarihi
18-03-2025
sayın uzmanamele
syn modoste, önerdiğim kodları bir standart modüle yazın ve kodu çalıştırın
bu dediklerinizin nasıl yapıldığını unuttum.
tekrar madde madde yazarmısınızı lütfen hocam
ayrıca dosya 5 sekmeden oluşuyo
ilk 3 sekme varken bu uyarı yoktu son eklediğim (taşı-kopyala diğer dosya) 2 sekmede eklediğimde bu ad çakışması olmuştu
ben hangi sekme açıkken nasıl yapacağım bilemiyorum.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,417
Excel Vers. ve Dili
excel 2010
merhaba

örnek dosyada kırmızı sekme renkli sayfada bir ad tanımlanmıştır.
bu sayfayı; kopyala- sona kopya oluştur derseniz ad çakışması uyarısı alırsınız.
diğer sayfalarda bu ad olduğu halde çakışma olmaz.

kodu her hangi bir sayfadan çalıştırabilirsiniz, sayfaya bakmaz kitabın içindekilere bakar.
 

Ekli dosyalar

Katılım
29 Şubat 2012
Mesajlar
53
Excel Vers. ve Dili
2007
Kod:
Sub IsimleriSil()
    For i = 1 To ActiveWorkbook.Names.Count
        ActiveWorkbook.Names.Item(i).Delete
    Next
End Sub
Sayın hamitcan hocam
Sadece aşağıdaki adları otomatik silmek için nasıl bir kod yazabiliriz?
DışVeri_1
DışVeri_1
DışVeri_2
DışVeri_3
DışVeri_4

yardımcı olabilirmisiniz acaba?
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,679
Excel Vers. ve Dili
Excel 2019 Türkçe
Böyle deneyin.
Kod:
Sub IsimleriSil()
    ActiveWorkbook.Names("DışVeri_1").Delete
    ActiveWorkbook.Names("DışVeri_2").Delete
    MsgBox "Adlar Silindi"
End Sub
 

İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,104
Excel Vers. ve Dili
Excel, 365 - İngilizce
Sayın hamitcan hocam
Sadece aşağıdaki adları otomatik silmek için nasıl bir kod yazabiliriz?
DışVeri_1
DışVeri_1
DışVeri_2
DışVeri_3
DışVeri_4

yardımcı olabilirmisiniz acaba?
DışVeri_1
DışVeri_1
DışVeri_2
DışVeri_3
DışVeri_4

Veya İngilizce:

ExternalData_1
ExternalData_2
ExternalData_3
ExternalData_4

şeklinde Webten Dış Veri Al yönteminde her alışta veya güncellemede, Excel yukarıda belirtildiği şekilde otomatik olarak tanımlanmış alan adları yaratır.

Bunları tek tek silinme yoluna gidilebilir.

Makro kaydet ile elde edeceğimiz aşağıdaki gibi kodlar:

Kod:
Sub IsimleriSil()
    ActiveWorkbook.Names("DışVeri_1").Delete
    ActiveWorkbook.Names("DışVeri_2").Delete
    MsgBox "Adlar Silindi"
End Sub
1 ve 2 yerine döngü de kullansak bu kodlar çalışmaz. (Yada ben çalıştıramadım.)

Bu alan adlarının arka planda çalışan query'den silmek gerekir. Bu nedenle aşağıdaki kodları kullanmak gerekir.

İki örnek verilmiştir.


Kod:
Sub disvalnsil()

For Each Syf In Worksheets
For Each qt In Syf.QueryTables
qt.Delete
Next
Next

End Sub

Kod:
Sub Bagalnsil()

Dim Syf As Worksheet, bag As Object
Dim xbag As Object


For Each xbag In ActiveWorkbook.Connections
If UCase(xbag.Name) Like "*" Then xbag.Delete
Next xbag

For Each Syf In ActiveWorkbook.Worksheets
For Each xbag In Syf.Names
xbag.Delete
Next xbag
Next Syf

End Sub
Denemeyi aşağıdaki dosyada yapıp sonucu görebilirsiniz.

http://www.excel.web.tr/attachment.php?attachmentid=131416&d=1335770665

.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,417
Excel Vers. ve Dili
excel 2010
Merhaba

Hatalı adların silinmesiyle ilgili bir şey dikkatimi çekti,
3 nolu mesajda önerdiğim kodu kullandığımda seçime bağlı olarak istediğimiz adları silebiliyoruz.
Kod:
Sub T_Ad_Sil()
On Error GoTo 10
Dim ONAY As Byte
For Each adlar In ThisWorkbook.Names
    ONAY = MsgBox(adlar.Name & vbCrLf & adlar & vbCrLf & vbCrLf & _
    "Tanımlı Ad Silinsin mi?", vbInformation + vbYesNo)
    
    If ONAY = vbYes Then
        adlar.Delete
    ElseIf ONAY = vbNo Then
    End If
10:
    Next
End Sub
.xls dosyası excel2007 ve üstü sürümlerle kullanıldığında EĞERHATA (IFERROR) fonksiyonu kullanıldığını farz edelim.
Bu dosya excel2003 ile açıldığında _xlfn.IFERROR hatası verecektir.
Nasıl oluyor bilmem, bu hata dosya içerisinde yapışıp kalıyor.
Ya da bu hücre ad tanımlama ile tanımlanmışsa yapışkan hale geliyor olabilir, emin değilim.

Fonksiyon hatayı giderip dosyayı kullanabiliyoruz. Ancak dikkatimi çeken şu oldu.
_xlfn.IFERROR hatalı adı, ad yöneticisinde görülmezken yukarıda verdiğim kod ile görülebiliyor ancak silinemiyor.
Dosyayı .xlsx veya .xlsm formatından .xls formatına dönüştürerek kod çalıştırılırsa hatalı ad siliniyor.

Ek dosyada bunu görebilirsiniz.
 

Ekli dosyalar

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,679
Excel Vers. ve Dili
Excel 2019 Türkçe
Galiba sayfa isimleri eklenince, siliniyor.
Kod:
ActiveWorkbook.Names("veri!DışVeri_1").Delete
Bu arada döngü kullanımı ile ilgili bir örnek de konu içinde olmalı. Döngüyü de sayfa ismini kullanarak oluşturursak tamamını silebilir diye düşünüyorum.
 
Katılım
24 Kasım 2006
Mesajlar
42
Excel Vers. ve Dili
excel 2007
Altın Üyelik Bitiş Tarihi
02-07-2021
Sayın uzmanamele ellerinize sağlık.Büyük bi derten kurtardın.
 
Katılım
24 Aralık 2017
Mesajlar
7
Excel Vers. ve Dili
2013
Altın Üyelik Bitiş Tarihi
24.12.2022
merhabalar,

Bu kodu çalıştırdığımızda herhangibir sayfayı bir kez kopyalama işlemi yaptığımda sorun görünmüyor. Fakat Kopyalanan sayfayı tekrar kopyaladığımızda aynı hata devam ediyor.Çözüm öneriniz nedir?

Teşekkür ederim.Saygılarımla
 
Katılım
29 Eylül 2006
Mesajlar
1
Excel Vers. ve Dili
2016 türkçe
Altın Üyelik Bitiş Tarihi
22.12.2022
merhaba

hatalı tanımlı adların bulunduğu dosyada bunları temizlemek bazen sorun olur.
kod ile tanımlı ad silindiğinde silinmesini istemediğimiz tanımlı adlar olabilir.
alternatif kod.
Kod:
Sub T_Ad_Sil()
Dim ONAY As Byte
For Each adlar In ThisWorkbook.Names
    ONAY = MsgBox(adlar & vbCrLf & vbCrLf & _
    "Tanımlı Ad Silinsin mi?", vbInformation + vbYesNo)
   
    If ONAY = vbYes Then
        adlar.Delete
    ElseIf ONAY = vbNo Then
    End If
    Next
End Sub
Faydalı paylaşım için teşekkür ederim.
 
Üst