HÜCRE VE ALAN YÖNETİMİ

    Excelde iyi makrolar yazabilmek istiyorsak öğrenmemiz gereken ilk şeylerden biri hücrelerin kullanımıdır. Çünkü neredeyse bütün işlemlerimiz hücre ve hücrelerin oluşturduğu alan değer ve özelliklerinden etkilenir veya etkiler. Bu sebepten dolayı da excel worksheet üzerinde hareket edebilmeyi çok iyi bilmek zorundayız. Yazdığımız mokraların nereleri etkilemesini istediğimiz veya makro için gerekli olan verileri nerelerden almamız gerektiği gibi konular genellikle hücrelerle bağlantılıdır. 

1- Hücre veya Hücrelerden Oluşmuş Alanların Adreslerinin Tanımlanması

    Aktif workbook ve worksheet kavramları o anda bilgisayarımızda açık olan ekrandaki workbook ve worksheet’tir. Eğer birden çok workbook ve worksheet açıksa ve biz kodumuzun hangilerinde işlem yapmasını istediğimizi eğer belirtmemişsek, kod farklı sayfaları etkileyebilir ve daha önceden de söylediğim gibi makroların yaptıkları değişiklikleri geri almak gibi bir eçeneğimiz malesef yoktur. Eğer bir worksheet’ten alınan bir veri işlenerek veya işlenmeden farklı bir worksheet’teki farklı bir satıra kaydediliyorsa, her seferinde kodun kopyalam işlemini veya yazma işlemini bitirdikten sonra kaynak worksheete dönmesi gerekir. Aksi halde ilk veriyi kopyaladığı sayfada kalır ve o sayfadaki hücreler üzerinde kopyalama ve yapıştırma işlemi yapar. Eğer makro için doğru adres tanımlaması yapamazsak, yani detaylı şekilde verileri nereden alacağı ve işlem sonrasında ne yapacağını belirtmemişsek, makro bize faydadan çok zarar getirecektir. Bu nedenle benim tavsiyem, ne kadar az sayıda workbook veya worksheetle çalışırsanız çalışın, her zaman kaynak ve hedefi net bir şekilde belirten makrolar yazın. 

    Her ne kadar DERS-2’de hücrelerin seçimini işlemiş olsak da burada da kısaca bahsedeceğiz.

Range(“A1”).Select

[B1].Select

 Cells(1,3).Select

Range(“A2:D13”).Interior.Color=RGBDarkBlue

Burada A:B:C:D Sütunları ile 2,3,4,5,6,7,8,9,10,11,12,13 numaralı satırların kesiştiği bir alanın içi RGBDarkBlue yani koyu mavi renge boyanmıştır.

[a1:c9].Select

Bu örnekte de yine A:B:C sütunları ile 1,2,3,4,5,6,7,8,9 numaralı satırların kesişim bölgesi seçilmiş ancak herhangi bir iş yapılmamıştır.

 

    Normal hayatımızda nasıl ki evimizin kapı numarasını adres satırımızın en sonunu yazıyorsak, hücre adresini yani numarasını macrolar için hedef gösterirken aynı şekilde en sona yazarız. Çünkü burada da tümden gelim söz konusudur. Bütünden en ufak , en küçük yapıya ulaşırız. Belki de bu kutucuklara  hücre adı verilemesinin en temel nedeni de zaten  budur. 

Artık hücrenin worksheet üzerinde hangi satır ve sütun kesişiminde olduğuna karar verdik. Bundan sonra ise bizim bu hücremizin hangi worksheet’te yer aldığını  belirtmeliyiz. Bu gösterim şeklinin birden fazla farklı yolu var ancak en genel olanını işleyeceğiz. Gelecek derste workbook ve worksheet işlerken detaylı olarak bütün yolları da öğreneceğiz.

Worksheets(“Sheet2”).Activate

Ve Sonrasında ise 

Range(“B1”).value=3

Gibi İlk önce Worksheet belirliyoruz, sonrasında ise worksheet üzerinde bulunan alan ile yani hücre  ile istediğimiz işlemi gerçekleştiriyoruz.

    Bizim worksheet üzerinde istediğimiz gibi hareket edebilmemiz ve işlem yapabilmemiz için hücre veya worksheet in aktif olması lazım.Neyse ki bunu da çok basit bir şekilde gerçekleştirebiliyoruz.

Sheet1.Activate

Worksheets(“Sheet2”).Activate

Range(“A1”).Select

Şeklinde istediğimiz worksheet ve hücreleri seçebiliyoruz. Sonrasında da istediğimiz işlemleri gerçekleştirebiliyoruz.

2- Belirlediğimiz Sütun, Satır veya Alanlara İsim Verme

     Elimizde farklı tablolar veya veriler olabilir. Genel anlamıyla veritabanı işlemlerinde tablo adı, beraberinde sütun ve satır adı çok önem arz etmektedir. Bilgi Kırıntıları sayfamızda basit sql sorgulama işlemleriyle alakalı bir takım basit bilgiler vereceğim. Size tavsiyem biraz zaman ayırmanız ve o konuya da göz atmanız.

     Yazdığımız veri ihtiva eden raporlarda veya çalışmalarda, kullandığımız tablolarımıza isimler veririz. Hatta OFFICE programlarında bu işlemi otomatik olarak yaparız. Tablolarımıza isim verdiğimiz zaman hem bu tabloların amaçlarını açıklamış oluruz hem de herhangi bir karşıklığa yol açmadan istediğimiz zaman istediğmiz tabloya sadece referans ile ulaşırız. Aslına bakarsanız sütun ve satılara isim verebilmemiz bize tabloları üzerindeki hakimiyetimize benzer bir güç verir. Bunu basit örneklerle açıklayalım. Bir değere ve o değerin karşılığını aradığımızı düşüelim. İlk önce hangi aralıkta arama yapılacağını belirtmemiz gerekir. Bu durumda sadece daha önceden isim verdiğimiz sütunun adını girip bu işi halletsek daha kolay olmaz mıydı? Olurdu tabi. Asıl önemli olan burada böye bir yöntemin varlığını bilmenizdir. Böylece daha önceden hiç aklınıza gelmeyen şekilde işlerinizi ve analizlerinizi güncelleyebilirisiniz. 

2.1 Alanlara İsim Verme

    Yan taraftaki örnekte oluşturduğumuz alan ve verilerin ilk 4 sütununu görüyoruz. En başta A1 hücresinin alanını tanımlayan ‘Marka ve Modellerine Göre Otomobil Fiyatları’ başlığı, ve sonrasında ise sütun isimleri ve veriler yer alıyor. Bu haliyle gördüğünüz sütun isimleri ve başlık sadece yazıldıkları hücrelerin değerlerini gösteriyorlar. Herhangi bir alanı tanımlamıyorlar. Ancak biz bu isimleri alan isimleri olarak tanımladıktan sonra, formül çubuğunun solunda olan adres çubuğu üzerinde bu isimleri görebileceğiz. Ve bu isimleri seçtiğimiz zaman tanımladıkları alanların seçildiğini göreceksiniz. 

    İlk aşamada burada örnekte de görmüş olduğunuz alana nasıl isim veriyoruz onu öğrenelim.

1-İsim vermek istediğimiz alanı seçiyoruz.

2-Sekmeler arasından Formulas sekmesine tıklıyoruz.

3-Yine kırmızı elips içerisinde görünen Define Name tuşuna basıyoruz ve ekranda görünen pencerenin açılmasını sağlıyoruz.

4-Resimde de gördüğünüz gibi penceremizin adı New Name. Şimdi alt kısımda Name isimli boşluğa zaten bizim excel girmiş olduğumuz tablo isminin, en altta ‘Refers To’ veri giriş penceresinde ise alanımızın hangi worksheet’de yer aldığı ve hangi hücreleri kapsadığını görebiliyoruz. Burada eğer isterseniz tablo ismini ve isim vermek istediğimiz aralığın sütun ve satır kapsamını güncelleyebilirsiniz. En sonda ise ‘OK’ tuşuna basarak, belirlediğimiz alana bir ad vermiş oluyoruz.

 

    Kırmızı kutucuk ile işaretlenmiş ters üçgene bastığımızda şekildeki gibi daha önceden isim verme işlemini tamamladığımız tablonun ismi gözükmektedir. Bu isme tıklarsanız, belirlediğiniz alan seçilmiş olacaktır.

2.2 Sütunlara İsim Verme

    Artık sütunlara isim verdiğimiz için, yandaki resimdeki gibi sütun isimlerinden itibaren alanı seçiyoruz. Sonrasında ise;

1-Formula Sekmesine tıklıyoruz.

2- Defined Names alanındaki ‘Create From Selection’ tuşuna basıyoruz.

3-Karşımıza örnekteki gibi görünen ama farklı bir pencere açılıyor.  Bu pencereden ise satır, sütun vb isimleri neredeyse onun tikini koyuyoruz. Bizim sütun isimlerimiz üstte olduğu için ‘Top Row’ seçeneğini işaretleyip ‘OK’ basıp işlemi tamamlıyoruz.

    Adres/isim çubuğundan vediğimiz isimlerden birini seçtiğimiz zaman, sütun başlığı dışında bütün sütunu seçmiş oluruz. 

2.3 Sütun ve Alan İsimlerinin VBA Editorde Kullanılması

Artık sütunlarımızın bir ismi var. Yani sütunlarla ilgili bir işlem yapacağımız zaman aralık yerine o sütun ismini girerek istediğimiz gibi işlem yapabiliriz. Burada örnek olarak sütunlarımızın içlerinin renklerini değiştireceğiz ve yazı tipini bütün tablo için italic yapacağız. Ve bu işlemi sütunların isimlerini kullanarak yapabileceğiz. Sol tarafata bu işlemleri gerçekleştiren VBA Editor’de yazdığımız Subroutine’i görüyorsunuz. Sağ tarafta ise sütunların renklerinin değiştirilmiş halini görüyorsunuz. Burada dikkat etmenizi istediğim bir husus var. O da gördüğünüz gibi sütun başlılarınızın renkelerinin değişmemiş olması. Sütunlara isim verirken üst satırdaki isimleri kullan anlamında olan ‘Top Rows’ seçeneğini seçmiştik hatırlarsanız. Bunun sonucunda ise bu satır başlılları isim olarak kullanıldı ve sütun içerisindeki verilerden ayrıldı. 

    Alttaki resimde de görüldüğü gibi yine sadece tabloya verdiğimiz ismi kullanarak, tablo içerisinde kalan bütün yazı ve rakamları daha doğrusu istediğimiz özelliği istediğimiz doğrultusunda değiştirebiliyoruz.

    Peki eğer bu listemizin altına bir satır daha eklersek??? Sonuçta ‘Marka’ sütunun altına ekleyeceğimiz veri yine bir otomobil markası olacaktır. Ancak biz yeni bir marka eklediğimiz zaman eklenen yeni hücre, ‘Marka’ sütun ismi tarafından temsil edilen aralığın dışında kalacaktır.Yani tekrardan bu sütun aralığını elle değiştirmek zorunda kalacağız. Peki her sütun altına yeni bir hücre eklendiğinde excelin bunu algılayıp, sütun aralığını otomatik olarak güncellemesini sağlayabilir miyiz? diye soran arkadaşlar varsa, hemen alt başlıkta sorularının cevapları onları bekliyor.

3- VBA Editor İle Sütun/Satır Aralığı Tanımlanması ve Otomatik Olarak Alanın Tayini

3.1 Sütun/Satır Değişken Tanımlama

    Değişken tanımlarken her ne kadar veri tipi olarak sayı, harf dizisi, tarih, kesirli sayılar v.b. ilk akla gelen tipler olsa da aslında çok önemli bir değişken tipi olan Range-yani alan’da bu uzun listenin içerisinde çok önemli bir yer tutar. Şimdi alan nasıl değişken olabilir diye 2 dakika düşünün. Belki bu 2 dakikanın hemen başında, belki de sonunda farkedeceksiniz ki Range-alan da aslında çok tipik bir değişken tipidir. Çok bariz bir örnek olarak, yukarıda kullandığımız ‘Marka ve Modeline Göre Otomobil Fiyatları’ tablosunu düşünelim. Halihazırda başlıklar ile beraber 4 sütun ve 12 satırdan oluşup [A1:D12] arasındaki 48 hücreden oluşan alanı  tanımlamaktadır. Tablonun altına yeni bir araba verisi daha eklediğimizi varsayalım. Şimdi tablomuz yine 4 sütundan fakat artık 13 satır ve 52 hücreden oluşuyor. Peki tablonun adını değiştirmeye gerek var mı? Tabi ki yok. Çünkü tablonun içeriği genişlediyse de yine aynı çeşit veri barındırıyor. Sadece içerik zenginleşti. Ve içeriği zenginleşirken 4 adet hücre daha eklendi. Yani daha önceden 48 hücreden oluşan bu tablomuz artık 52 hücreden oluşuyor. Kısaca temsil ettiği, kapsadığı alan değişti. Yani tablo ismi aynı ancak alanı artık farklı. Bizim ‘Bilgi Kırıntıları’ sayfamızda işlediğimiz değişken kavramı bu olayı tam olarak izah ediyor. Yani farklı değerler alabilen şeyler değişkendir. Sadece aldığı değerin tipi önemlidir. Her nasıl tam sayı veri tipi depolaması için tanımlanan ‘X’ her problemde farklı değerler alabilirse, alan depolaması için tanımlanan bir ‘Tablo X‘, ‘Marka‘, ‘Model‘ de her zaman farklı sayıda hücreyi(Alan olarak) tanımlayabilir. Şimdi bu alan olarak değişken tanımını gerçekleştirelim.

    Dim OtoFiyatTablosu As Range 

    Gördüğünüz gibi değişken tanımlama şeklimiz standart olduğu için herhangi bir ek çalışmaya gerek yok. Şimdi ise önemli olan kısım, yani alanın tanımlanması. Bu kısım biraz farklı. Burada ilk defa gördüğümüz ‘Set’ komutunu kullanacağız.

    Set OtoFiyatTablosu=Range(“A1:D4”)

    Bu şekilde de Değişkene ait alan belirtilmiş oldu. Artık OtoFiyatTablosu değişkenine IntelliSense üzerinden ulaşabiliriz. Ayrıca Range object/nesnesine ait bütün method ve property’leri IntelliSense üzerinde görebiliriz.

Hücre ve Alan Yönetimi Range'e Ait IntelliSense Listesi

Range nesnesine ait IntelliSense kullanımının mümkün olması bizim için çok büyük bir avantaj teşkil etmektedir. Peki şimdi alan cinsinden değişken tanımı yaptık ve hatta değişkene ait bir alan da tanımladık. Şimdi sıra bu tabloya yeni bir veri girişi olduğu zaman, yeni eklenen satırların da otomatik olarak tanımladığımız tabloya eklenmesine olanak sağlayan eklemeleri yapmaya geldi. 

Burada önemli olan Set OtoFiyatTablosu=Range(“A1:I12”) kod kısmındaki (“A1:I12”) kısmıdır. Burada bizim yaptığımız şey sadece 2 adet sabit hücre gösterip aradaki sütun ve satırların bir alan oluşturmasını sağlamaktır. Peki ama alt kısma bir satır eklenirse bu bu alan nasıl değişir? Eğer aralığımızı bu şekilde yazmaya devam edersek elimizle I12 yerine I13 yazmamız gerekir. Ama biz bunun otomatik olmasını istiyoruz. İşte o zaman bu aralığı yazma şeklimizi (‘.End’) Property/Özelliğini kullanarak değiştiriyoruz. Peki bu End özelliği ne işe yarar? Aslında klavye üzerinde tablolarda en alt hücreye gitmek için kullandığımız CTRL+SHIFT+Yön Tuşları nın yaptığı şeyi VBA Editor’de yapmamızı sağlar. 

Daha önceden bu kombinasyonu kullanmayanlar için şöyle açıklıyayım. Bir tablo içerisinde herhangi bir hücreyi fare ile tıklayarak seçtiğinizi varsayalım. Eğer SHIFT tuşuna basarken aynı anda yön tuşlarından bir tanesine bir kez basarsanız, yapmış olduğunuz seçiminizin o hücreye doğru genişlediğini görürsünüz.(Lütfen siz de deneyin.) Burada dikkat etmeniz gerek şey şu; seçili olan hücreniz değişmez, sadece yeni seçtiğiniz hücreler ile birlikte genişler, zaten eğer seçimimizi değiştirmek isteseydik sadece yön tuşlarına basmamız yeterli olacaktı. Aynı durumda CTRL+SHIFT+Yön Tuşları  kombinasyonunu uygularsanız ise seçtiğiniz yöndeki satır veya sütunun en son hücresine kadar uzanan bir alan seçmiş olursunuz. Sütununuzun ne kadar uzun olduğu hiç farketmez. Önemli olan hücreler arasında boşluk olmamasıdır. Çünkü komut, boş hücre denk geldiği zaman duracak ve boş hücreye kadar olan bölge, yani satır veya sütun seçilecektir.  Eğer herhangi bir tablonun en üst sol köşe hücresini seçtikten sonra CTRL + SHIFT + Aşağı Ok tuşlarına beraber basarsanız da bütün tabloyu otomatik olarak seçmiş olursunuz. Tabi bu hareket için başlangıç noktası olarak tablonun dört köşesinden istediğiniz birini seçebilirsiniz. Tabi bu koşulda okun yönü değişecektir.

3.2 Bir Satır veya Sütunun En Son Hücresini Otomatik Olarak Seçmek

   Bu bölümde yukarıda bahsettiğimiz en son hücre seçme işlemini VBA Editor üzerinde görelim.

Hücre ve Alan Yönetimi .End Metodu Yön SeçenekleriHücre ve Alan Yönetimi Örnek Tablo

 

 

 

 

 

 

Örneklerde görüldüğü gibi End Property içerisinde de kendine ait yön bildiren seçenekler vardır.

Range(“A2”).End(xlDown, xlToLeft, xlToRight, XlToUp) 

xlDown aşağı, xlToLeft sola, xlToRight sağa ve xlUp yukarı anlamına gelir. ‘End’ kelime anlamadı son olduğana göre en basit açıklamasıyla hangi yönde sona gitmemizi bu şekilde belirtiriz. Select methodunu seçmemizin sebebi ise işlemimizin çalışıp çalışmadığını bu örnek için görmektir. Peki A2 hücresine en uzakta yer alan hücreyi yani I12 hücresini seçmek istersek ne yapmamız gerekir. Şöyle düşünelim zaten 

Range(“A2”).End(xlDown) ile A sütununun en alt hücresini seçtik, yapmamız gereken şimdi seçilen hücrenin sağ tarafındaki en son hücreyi bulmak. O zaman bir daha ‘End’ kullanarak, bu sefer de satırın en son, yani tablomuzu alanını belirten diğer köşe hücresini bulalım.

Örnek şablonda da görülebildiği üzere End özelliğini 2 kere kullanarak x ve y doğrultusunda yani satır ve sütunlar doğrultusunda 2 boyutlu olarak ilerleyebiliyoruz. Siz de bu şekilde farklı hücreler seçerek farklı yönlerde ilerleyen kodlar yazarak bu konuyu daha iyi anlayabilir, pekiştirebilirsiniz.

3.3 .End() Kullanarak Alan Seçme, Tayin Etme

Alan seçme işlemini gerçekleştirmek amacıyla yapmamız gerken tek şey, yukarıda da belirttiğimiz gibi Range(“A2:I12”) ifadesini dinamik bir hale sokmakla mümkündür. Alan tanımlarken 2 adet parametre kullanmaktayız. Bunlardan ilki birinci hücremiz, yani ‘A2′, diğeri ise ikinci hücremiz olan’I12’. Biz burada ‘A2’ hücresini sabit olarak bırakıp, ‘I12’ hücresini ise End() kullanarak ‘A2’ hücresine bağlı dinamik bir  hücreye çevireceğiz.

Alan tanımlarken hazırlamış olduğumuz kodda sadece ‘I12’ yerine bir önceki konuda göstermiş olduğumuz en son satırı, ordan da en son sütunu seçme formülünü yazarak istediğimiz dinamik tabloyu oluşturmuş olduk. Artık ‘OtoFiyatTablosu’ altına, dünyada yer alan bütün araba modellerini yazsanız da, bu kodu çalıştırdıktan sonra tabloyu bütünüyle seçebileceksiniz. Ancak önemli bir konuyu tekrar belirtmek istiyorum. Eğer satır veya sütunlar içerisinde özellikle seçmiş olduğumuz hücrenin bulunduğu sütun ve sonrasında en alt satırda boş bir hücre varsa, kod orada kesilecek ve boş hücreye kadar olan bölümü alan olarak alacaktır. Bu hatayı bir örnek üzerinde gösterecek olursak;

Örnekte gördüğünüz gibi kodumuzu(kod üzerinde hiçbir değişiklik yapılmamıştır) çalıştırdığımız zaman, ilk seferden farklı bir sonuç vermekte. Bu duruma ise bahsi seçen boş hücreler neden olmaktadır. İlk önce sütun boyunca en alt satıra inmek isteyen kod, önünde boş hücreye rastlayınca tablonun son satırına geldiğine kanaat getiriyor ve ikinci görevi olan, son sütuna gitme işini yapmaya çalışıyor. 8 numaralı satır boyunca sağa doğru ilerleyen kod, yine boş bir hücre ile karşılaşıyor ve ikinci hücre olarak ‘I12’ yerine ‘E8’ i tanımlıyor. Bu durum ise bütün tablonun seçilemeyerek, daha küçük bir tablonun seçilmesine ve hata yapılmasına neden oluyor.

3.4 En Son Hücreye Değer Yazdırmak-OffSet (Parametre1,Parametre2)

    Şimdiye kadar bir tablo üzerinde istediğimiz yönde en son veri ihtiva eden hücreleye ilerleyebilmeyi öğrendik. Bu kısımda ise biraz daha ileri giderek en son veri tutan hücrenin altından itibaren istediğimiz veriyi yazdırmayı öğreneceğiz. Sütun uzunluğumuz ne kadar fazla olursa olsun, otomatik olarak sütunların en altına gidip, ‘OtoFiyatTablosu’ listesine yeni bir veri ekleyebileceğiz. Bu işlemi yerine getirebilmek için 2 kavram öğrenmemiz gerekecek. Bunlardan ilki ‘ActiveCell’ kavramı, diğeri ise OffSet(parametre1, parametre2) özelliğinin kullanımı. Yapacağımız işlemi Activecell kullanmadan da yapabiliriz ancak ActiveCell bize yapacağımız işlemlerde çıkabilecek olan karışıklıkları en aza indirgememizde yardımcı olur.

3.4.1 Etkin Hücre-Seçilmiş Hücre Kavramları

    Bu kavram aslında bizim daha önceki örneklerde kullandığımız bir kavramdır. Bunu size göstermek için çok basit örneklerle bu kavrama başlayalım. ActiveCell tanımı o an için yapacağınız herhangi bir işlemin gerçekleşeceği hücreyi tanımlar. Excel Worksheet üzerinde bir hücre içine telefon numarası kayıt edeceğinizi varsayalım. İlk önce telefon numarasını yazacağınız hücreyi seçer ve sonra gidip fare ile tıklarsınız ve hücreyi seçersiniz(.Select Method). İşte o hücre o an itibariyle worksheet üzerindeki ActiveCell‘dir. Yani etkindir. Başka bir numara daha yazmak istediniz ve Aşağı Ok tuşu ile bir alt hücreye indiniz. Artık alt hücre sizin ActiveCell‘iniz haline geldi. Olay aslı itibariyle bu kadar basit. Ve VBA Editor üzerinde bu işlemin yapılması da bir o kadar kolaydır. 

Sütun ve satırlarda en son hücreyi bulduğumuz zaman aslında o an farkında olmadan en son hücreleri ActiveCell haline de getirdik. Sizin de bilgisayar üzerinde son hücreyi bul çalışması yaptığınızdan emin olarak söylüyorum. Kodu çalıştırıp da A sütununu en alt hücresine gittiğiniz zaman, worksheet üzerinde o hücrenin etrafının sanki tıklanmış gibi kenarlıklarının farklı renkle(genellikle siyah) boyandığını görürsünüz. Eğer fare ile başka bir hücreye de tıklarsanız aynı şekilde hücre sınırlarının kalınlaştığını göreceksiniz. Yani o hücre artık sizin seçilmiş/activecell hücrenizdir. Eğer VBA Editor üzerinde kendimize bir hücre seçmek istersek de bunu aşağıdaki şekilde çok basitçe yapabiliriz.

Range(“A12”).Select veya Range(“A12”).Activate——-> Bu iki yazım şekliyle istediğimiz hücreyi etkin hücreye çevirebiliriz.(Siz de farklı hücreler için bunu deneyin.) 

Peki bu hücreyi nasıl kullanacağız.

 

Sütunun en altında yer alan hücrenin bir altındaki hücreyi ActiveCell seçeceğiz ve o hücreyi mesnet noktası kabul ederek, o hücrenin yanındaki hücrelere değer atayacağız. Active hücrenin bir yan hücresinin değer=Yeni bir marka, Active hücrenin iki yan hücresinin değeri=Yeni bir model şeklinde en alt satıra yeni otomobilimize ait özellikleri ekleyeceğiz. Şimdi sıra bize bu hareket kabiliyetini kazandıran OffSet özelliğinin kullanımını öğrenmekte.

 

3.4.2 OffSet-Ötelemek

    Eğer seçmiş olduğumuz bir hücre varsa ve biz bu hücreyi kendimize sıfır noktası, yani orjin olarak alırsak, o noktadan yani hücreden istediğimiz hücreye OffSet ile ulaşabiliriz. Eğer OffSet’in sözlük anlamına bakacak olursanız uzunca bir liste göreceksiniz. Onun için ben sizi hiç o zahmete sokmayayım. Başlığımızda da yazdığım gibi OffSet’in bizi ilgilendiren anlamı ‘ötelemek’. Kaydırmak da uygun olabilir ama bence ötelemek anlamı tam olarak bizim yapacağımız iş olduğu için ben ötelemeyi seçiyorum. Şimdi OffSet ile worksheet üzerinde istediğimiz noktaya gidebileceğimizi ve bunun içinse bir mesnet noktasına ihtiyacımız olduğunu söyledik. Yani ilk önce sıfır noktası olarak kabul edeceğimiz hücreyi belirleyelim. Sonra o noktadan nasıl harekete geçeceğimizi görelim. 

Yine OtoFiyatTablosu üzerinde örneğimizi ve işlemlerimizi uygulayacağız. Bu kapsamda ilk önce en alt hücreyi seçelim ve bir hücreye OffSet ile geçiş yapalım. 

OffSet(Parametre1, Parametre2) Görüldüğü gibi offsetin 2 adet parametresi vardır. Yani OffSet çalışması için 2 adet girdiye ihtiyaç duyar. Bunlardan ilki aşağı veya yukarı hareketinizi sağlayacak olan satır sayısıdır. Negatif değer girerseniz yukarı pozitif değer girerseniz aşağı doğru hareket edersiniz. İkinci parametre de sağa ve sola hareket edebilmemizi sağlayan sütun sayısıdır. Negatif değer girerseniz girdiğiniz değer sayısı kadar sola, pozitif değer girerseniz girdiğiniz değer sayısı kadar sütun sola gidersiniz.

ActiveCell.OffSet(0,5).Select= Aşağı veya yukarı hareket yok, sağa doğru 5 hücre git ve o hücreyi seç

ActiveCell.OffSet(-2,6).Select=2 hücre yukarı ordanda 6 hücre sağa git ve o hücreyi seç

Range(“A12”).OffSet(1,0).Value=13=A12 hücresinin altındaki hücrenin değerini 13 yap.

Örnekler çoğaltılabilir ama bence artık genel bir fikre sahipsiniz. (Siz de bu şekilde farklı değerler girerek egzersiz yapmayı unutmayın.)

Şablonda hareket etmek istediğimiz hücreye doğru OffSet’i nasıl kullanacağımızı çok net bir şekilde görebiliyoruz. ActiveCell(Bu örnekte ‘C16’)  olarak seçilmiş olan hücreden ilk olarak 7 satır aşağı inip sonra 4 sütun sağa gidiyoruz ve vardığımız hücrenin(‘G23’) değerini istediğimiz şekilde değiştiriyoruz. Örnekte de gördüğünüz gibi OffSet ile hareket etmek çok kolay. Şimdi artık OffSet ile hareket ederek OtoFiyatTablosu’na yeni verileri eklemey geldi.

3.4.3 OffSet Kullanarak Tablolara Yeni Veriler Eklenmesi

Şimdi adım adım yaptığımız işlemleri açıklayarak örneğimizi beraber değerlendirelim.

1-A Sütununun en alt hücresine gidiyoruz.Sonra aşağı yönde bir hücre öteleyip, o hücreyi bizim etkin hücremiz yani ActiveCell olarak seçiyoruz.

2-ActiveCell’imizin değerini, bir üst hücrenin değerinden 1 fazla olacak şekilde ayarlıyoruz. Bu sayede bu kodu her çalştırdığımızda otomatik sıra numarası vermiş oluyoruz.

3-Marka sütununa “Volvo” markasını ekliyoruz.

4- Model sütununa “S90” markasını ekliyoruz. 

5- Donanım sütununa “Inscription” donanımını ekliyoruz. 

6-Motor hacmi sütununa 2000 cc ekliyoruz. 

7- Yakıt tipi sütununa “Dizel” yakıt tipini ekliyoruz. 

8- Vites tipi sütununa “Otomatik” tipini ekliyoruz. 

9- Yıl sütununa 2019 yılını ekliyoruz. 

10- Fiyat sütununa 602800 fiyatını ekliyorz.

   Yukarıdaki kodu çalıştırdışınız zaman bilgilerin tek tek sütunların en alt hücrelerinin bir altlarına geldiğini göreceksiniz. Sizden isteğim kodu yazdıktan sonra F8 kullanarak hücrelere verilerin atandığını görmeniz. Ve eğer bu kodu tekrar ve tekrar çalıştırırsanız, Sıra No değerinin birer artarak gittiğini, diğer hücrelerinse değerlerinin hep aynı olduğunu göreceksiniz.

Bu konuyla alakalı pekiştirmek adına bu değerler değiştirerek yeni veriler bu tabloya işleyebilirsiniz. Ancak benim size tavsiyem A sütunu ile başlamak yerine G Sütunu ile bu alıştırmayı yapmanız. Bu konuda ben sıkıntı çekeceğinizi düşünmüyorum ancak. Yine de bir sıkıntı yaşarsanız size aşağıda çözümü veriyorum. Sizden isteğim her ne kadar uğraşırsanız uğraşın, kesin yapamayacağınızdan emin olana kadar çözüme bakmayın. Ayrıca kullanabileceğiniz verileri de aşağıda veriyorum. 

Marka:BMW

Model:3 Series

Donanım: Premium

Motor Hacmi: 1500

Yakıt Tipi:Benzin

Vites Tipi:Otomatik

Yıl: 2018

Fiyat: 289400

Dünya Çapında Araştırmacılara Ait Çalışmaları Okumak İsterseniz https://www.researchgate.net/profile/Ender_Dagdelen adresini Ziyaret Edebilirsiniz. Ana Sayfaya Dönmek İsterseniz De Aşağıdaki Tuşu Tıklayınız.

Herkese İyi Çalışmalar…

Soru ve Öneriler İçin;

[email protected]