Makro içerisinde göreceli başvuru oluşturma

Katılım
14 Şubat 2007
Mesajlar
20
Excel Vers. ve Dili
Excel-2003
Rusca
Degerli üstadlar;

Makro kodlari icerisinde, sutunlari veya satirlari silmemden etkilenmeyecek goreceli bir basvuru olusturmak istiyorum. Yani benim Range("B1:B5") diye tanimladigim aralik, ben A sutununu sildigim zaman Range ("A1:A5") haline gelmeli. Yardiminiz icin simdiden tesekkur ediyorum. Iyi calismalar dilerim.
 
Katılım
2 Mart 2007
Mesajlar
603
Excel Vers. ve Dili
2003
ekle > ad >tanımla yaparak verebilirsiniz.
burada $ ları kaldırarak kaydedin.
Makroda da
Kod:
Dim alanım as Range
alanım=range("Burada tanımlamış olduğunuz adı yazıyorsunuz")
bu şekilde yapabilirsiniz.
 
Katılım
14 Şubat 2007
Mesajlar
20
Excel Vers. ve Dili
Excel-2003
Rusca
Oncelikle ad tanimlamayi degil de, bunu makro icinde yapmak istiyorum. Sizin onerdiginiz cozumde, bildigim kadariyla range(" ") seklinde tirnak icinde tanimladigimiz ifade statiklesiyor. Yani $ isareti kullansam da kullanmasam da bu artik mutlak bir basvuru oluyor. Yaniliyorsam lutfen beni duzeltin...

Evet arkadaslar, makro icinde goreceli basvuru yapmanin herhangi bir yolu yok mu?


ekle > ad >tanımla yaparak verebilirsiniz.
burada $ ları kaldırarak kaydedin.
Makroda da
Kod:
Dim alanım as Range
alanım=range("Burada tanımlamış olduğunuz adı yazıyorsunuz")
bu şekilde yapabilirsiniz.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Verilerinizin en üstüne sütun başlıkları veriniz.
Döngüye girerek veya find komutu ile sütun başlıklarının adresini bularak göreceli bir adres elde etmiş olursunuz.:cool:
 
Katılım
14 Şubat 2007
Mesajlar
20
Excel Vers. ve Dili
Excel-2003
Rusca
Tabi ayni seyi satirlar icin de yapmak gerekecek. bir cozum olabilir ama ne derece pratik, denemem lazim.. aslina bakarsaniz bu goreceli basvuruyu ben excel fonksiyonlarindan 'adres'i kullanarak olusturuyorum ancak bu olusturdugum basvuru adresini hucreden okutup makroda range(" ") icine yazdiramiyorum.. Muhakkak cok daha basit bir cozum olmasi lazim, ama henuz bulamadim.
 
Katılım
2 Mart 2007
Mesajlar
603
Excel Vers. ve Dili
2003
Oncelikle ad tanimlamayi degil de, bunu makro icinde yapmak istiyorum. Sizin onerdiginiz cozumde, bildigim kadariyla range(" ") seklinde tirnak icinde tanimladigimiz ifade statiklesiyor. Yani $ isareti kullansam da kullanmasam da bu artik mutlak bir basvuru oluyor. Yaniliyorsam lutfen beni duzeltin...

Evet arkadaslar, makro icinde goreceli basvuru yapmanin herhangi bir yolu yok mu?
Uygulayarak deneseydiniz çeşke.

Ad tanımlamada $ işareti kullanmayın demiştim.
=b1;b10 şeklinde tanımlanacak,
a sütününu sildiğinizde
ad içinde tanımlamış olduğunuz =b1;b10 aralığı da =a1;a10 olarak değişecektir.

Kod:
Dim alanım as Range
alanım=range("Burada tanımlamış olduğunuz adı yazıyorsunuz")
 
Son düzenleme:
Katılım
14 Şubat 2007
Mesajlar
20
Excel Vers. ve Dili
Excel-2003
Rusca
Tamam haklisiniz, ama excel'in fonsiyonlariyla goreceli basvuru olusturma ile problemim yok. Anlattiginiz (ve dosyanizda da gorulen) mevzu, ad tanimlama kullanilmadan da formul yazildiginda zaten goreceli basvuru oluyor. Yani excel icindeki hucrelere $ isareti koymadigimiz surece problem yok.. lakin benim amacim bunu makro kullanarak yaptirmak.. Tanimladigim alani makroda kullanamiyorum ki..
 
Katılım
2 Mart 2007
Mesajlar
603
Excel Vers. ve Dili
2003
az önce başka bir arkadaş için yapmıştım.
Örneğe bak istersen
Hazırkartlar Ad tanımla ma için yapıldı.
Kod:
Sub control()
Dim SAYFAM As Range
Dim SAYFAM2 As Range
Set SAYFAM = Range("HAZIRKART")
Set SAYFAM2 = Range("HAZIRKART1")
yer = ActiveCell.Value
sayım = WorksheetFunction.CountIf(SAYFAM, yer)
sayım = sayım + WorksheetFunction.CountIf(SAYFAM2, yer)
If sayım > 1 Then
MsgBox "zaten var"
End If
End Sub
 
Katılım
14 Şubat 2007
Mesajlar
20
Excel Vers. ve Dili
Excel-2003
Rusca
Evet saniyorum haklisiniz.. Kusura bakmayin, tam olarak anlamamisim anlatmak istediginizi.. Yardiminiz icin cok tesekkur ederim.

Saygilarimla.
 
Üst