• DİKKAT

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

Dinamik Alan Sınırlarını Değişkenlere Atama

  • Konbuyu başlatan Konbuyu başlatan darcy
  • Başlangıç tarihi Başlangıç tarihi
Katılım
2 Aralık 2010
Mesajlar
7
Excel Vers. ve Dili
Excel 2007 Türkçe
merhaba
bu forumdan öğrendiğim bir yöntem olan Dinamik Alanları VBA'da kullanmak istiyorum.

Dinamik alanın ilk ve son satır ve sütun numaralarını değişkenlere atamak mümkün müdür?

a = dinamik alanın ilk satır numarası
b = dinamik alanın son satır numarası
c = dinamik alanın ilk sütun numarası
d = dinamik alanın son sütun numarası gibi.
 
Selamlar,

Aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub MAKRO_İLE_DİNAMİK_ALAN_TANIMLAMA()
    Dim İLK_SATIR As Long, SON_SATIR As Long
    Dim İLK_SÜTUN As Byte, SON_SÜTUN As Byte
    Dim ADRES As String
 
    İLK_SATIR = 1
    SON_SATIR = 100
    İLK_SÜTUN = 1
    SON_SÜTUN = 10
 
    ADRES = "=Sayfa1!" & Range(Cells(İLK_SATIR, İLK_SÜTUN), Cells(SON_SATIR, SON_SÜTUN)).Address
 
    ActiveWorkbook.Names.Add Name:="DİNAMİK_ALAN", RefersTo:=ADRES
End Sub
 
Cevabınız için teşekkür ederim Korhan Bey;

ben başka bir şey sormuştum ama VBA editöründe de alan tanımlamayı öğrenmiş oldum. :idea:

Ancak ben şunu söylemek istedim;

aşağıdaki gibi bir formül kullanarak BF adında bir dinamik alan tanımlamış bulunmaktayım.
=KAYDIR(Sayfa1!$B$3;0;0;BAĞ_DEĞ_DOLU_SAY(Sayfa1!$B$3:$B$30000);BAĞ_DEĞ_DOLU_SAY(Sayfa1!$B$2:$IV$2))
ve yazacağım makronun BF alanındaki veri içeren son satır ve son sütun numarasını kullanarak işlem yapmasını istiyorum. Bu yüzden veri tablosunun son satır ve sütun numarasını değişkenlere aktarmayı uygun buldum.

aşağıdaki şekilde bir kod yazarak son satır numarasını bulabilirim. Ama hazırladğım excel dosayası bir sürü veri tablosu ve birbirini çağıran pekçok makrodan oluşacak.
Her veri tablosu için aşağıdaki gibi bir döngü kullanmanın hem makroyu çok uzatacağını hemde bu kadar çok döngünün makroyu yavaşlatacağını düşünüyorum.

Kod:
Sub deneme()
Dim i As Integer
For i = 3 To 30000
   If Sheets("Sayfa1").Cells(i, 2) = 0 Then Exit For
Next i
i = i - 1
End Sub

öğrenmek istediğim şey
Kod:
a=BF(sonsatir)
b=BF(sonsutun)
gibi bir kod var mı?

Ekli dosyayı görüntüle hata1.xls
 
Selamlar,

Aşağıdaki şekilde kullanabilirsiniz.

Kod:
Option Explicit
 
Sub DİNAMİK_ALAN_BİLGİLERİ()
    MsgBox Range("[COLOR=red]BF[/COLOR]").Rows.Count 'Son Satır numarası
    MsgBox Range("[COLOR=red]BF[/COLOR]").Columns.Count 'Son Sütun numarası
End Sub
 
Aradığım kod buydu.
Teşekkür ederim Korhan Bey.
 
Merhaba,

Bende üzerinde çalışmıştım, boşa gitmesin

Kod:
Sub AdlarinBaslangicVeBitisHucreleri()
Dim nm As Name
Dim x As String
For Each nm In ThisWorkbook.Names
    x = nm.Name
   MsgBox x & " İlk Hücresi : " & Replace(Split(Range(x).Address, ":")(0), "$", "") & Chr(10) & Chr(10) & _
          x & " Son Hücresi : " & Replace(Split(Range(x).Address, ":")(1), "$", "")
Next nm
End Sub
 
Necdet Bey sizin yazdığınız kodların çoğunu bilmiyordum.

makroyu modelde çalıştırınca
Run-time error '1004':
Method 'range' of object'_Global failed diye hata verdi. ben bi yerde hata yaptım heralde.

bir de bişey dikkatimi çekti, bunu çalıştırınca Locals bölümünde sonsuza uzanan bi expressions ağacı çıktı.

Adsız.jpg
 
Son düzenleme:
Merhaba,

Ben dosyada 2 adet ad tanımı yaptım, biri dinamic diğeri ise sabit.

Kodları o dosya üzerinde denedim sizinki gibi bir hata ile karşılaşmadım.
 

Ekli dosyalar

Geri
Üst