• DİKKAT

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

Alana isim verme sorunu

Katılım
30 Nisan 2008
Mesajlar
73
Excel Vers. ve Dili
2007 tr
Bir alana makro ile isim vermek istiyorum. Eğer o isim daha önce verilmişse silip yeniden vermesi gerekiyor. Bunun için

ActiveWorkbook.Names("HKV").Delete
Worksheets("Sayfa1").Range(cells(4, 3), cells(10, 6)).Name = "HKV"

diyorum. Bu sefer de o isim daha önce yoksa hata veriyor. O zaman "on error resume next" diyorum ama bu sefer de bazen ismi alana atıyor bazen atamıyor.

Ne yapabilirim?
Teşekkürler
 
:cool:
Kod:
Sub ad_tanımla()
Dim isim As Name
For Each isim In ActiveWorkbook.Names
    If isim.Name = "HKV" Then isim.Delete
Next
Worksheets("Sayfa1").Range(Worksheets("Sayfa1").Cells(4, 3), Worksheets("Sayfa1").Cells(10, 6)).Name = "HKV"
MsgBox "HKV isimli alan tanımlandı.", vbOKOnly + vbInformation, "AD"
End Sub
 
Teşekkür ederim ama malesef worksheets ile başlayan satırda hata veriyor.
 
Teşekkürler ancak worksheets ile başlayan satırda yine hata veriyor.
 
merhaba
sayfa1 aktifken kod çalıştırılırsa sorun yok ancak başka bir sayfa aktifken kod çalıştırılınca hata veriyor.

Kod:
Worksheets("Sayfa1").Range(Cells(4, 3), Cells(10, 6)).Name = "HKV"
satırını aşağıdaki gibi değiştirerek deneyiniz
Kod:
Worksheets("Sayfa1").Range("C4:F10").Name = "HKV"
 
Sayın uzmanamalenine koduna alternatif Aşağıdaki koduda çalıştırabilirsiniz.:cool:
Kod:
Worksheets("Sayfa1").Range(Worksheets("Sayfa1").Cells(4, 3), Worksheets("Sayfa1").Cells(10, 6)).Name = "HKV"
 
Ekli dosyada gayet güzel çalışıyopr.:cool:
 

Ekli dosyalar

sayfa ismilerini en başa koymuşum ama cellslerin önüne koymayı unutmuşum Hata ondan kaynaklanıyor olabilir.
Nedense hep oraya sayfa adını koymayı unutuyorum.:D
 
onu da yaptım, bu sefer de:
If isim.Name = "HKV" Then isim.Delete
satırında "object required" hatası veriyor. Bu arada range'leri örn. ("A1:B2") şeklinde tanımlayamıyorum çünkü hücre sayısı bir değişkene bağlı..

Bazen de makroyu ilk çalıştırdığımda oluyor, ikincisinde hata veriyor. Halbuki her çalıştırmada isimler silip, yeniden tanımlayabilmesi gerekmez mi?
 
Son düzenleme:
onu da yaptım, bu sefer de:
If isim.Name = "HKV" Then isim.Delete
satırında "object required" hatası veriyor. Bu arada range'leri örn. ("A1:B2") şeklinde tanımlayamıyorum çünkü hücre sayısı bir değişkene bağlı..

Bazen de makroyu ilk çalıştırdığımda oluyor, ikincisinde hata veriyor. Halbuki her çalıştırmada isimler silip, yeniden tanımlayabilmesi gerekmez mi?


merhaba
şöyle bişey olur mu

Kod:
ActiveWorkbook.Names.Add Name:="HKV", _
    RefersTo:=Sheets("Sayfa1").Range("A" & i & ":" & "A" & j)
 
Aynı yerde hata veriyor. Mevcut "HKV" ismini bulup silmede problem çıkarıyor..
 
Aynı anda iki isim birden aratıp sildirdiğim için hata veriyormuş.. Her isim silme işlemi için ayrı bir for..next döngüsü verince oldu. Ama yine de anlamadım tabi, bir döngüde neden tüm isimleri aratıp; bizim istediklerimizi bulunca sildiremediğimizi..

Hatalı döngü:
For Each isim In ActiveWorkbook.Names
If isim.Name = "Hidrantlar" Then isim.Delete
If isim.Name = "HKV" Then isim.Delete
Next

Ayrı döngüler:
For Each isim In ActiveWorkbook.Names
If isim.Name = "Hidrantlar" Then isim.Delete
Next
For Each isim In ActiveWorkbook.Names
If isim.Name = "HKV" Then isim.Delete
Next
 
isimleri dizide tanımlayıp hepsini iç içe döngüyle aratıp sildirdim :)
Çözüm önerileri için çok teşekkür ederim.
 
isimleri dizide tanımlayıp hepsini iç içe döngüyle aratıp sildirdim :)
Çözüm önerileri için çok teşekkür ederim.
Hiç gerek yok.
Doğrusu aşağıdaki gibi olacak.:cool:
Kod:
For Each isim In ActiveWorkbook.Names
If isim.Name = "Hidrantlar" Or isim.Name = "HKV" Then isim.Delete
Next
 
Hımm az sayıda isim için güzel ama bende silinip tekrar tanımlanması gereken (şimdilik) 11 isim var; ve kodu geliştirdikçe sayı artacağa benziyor :) Ben de şöyle yaptım:

For i = 0 To 10
For Each isim In ActiveWorkbook.Names
If isim.Name = isimler(i) Then isim.Delete
Next isim
Next i
 
:cool:
Kod:
Dim isim As Name, i As Byte, isimler()
isimler = Array("", "Hidrantlar", "HKV")
For i = 1 To 2
    For Each isim In ActiveWorkbook.Names
        If isim.Name = isimler(i) Then isim.Delete
    Next
Next i
 
merhaba
sanırım her defasında mevcut tanımlı adları silip yeniliyorsunuz.
bunu deneyin

Kod:
Sub isim_sil()
For Each isim In ThisWorkbook.Names
isim.Delete
Next
End Sub
 
Geri
Üst