Bu ,.com'daki 19. haftalık Excel ipucudur. Excel ipuçlarının çoğu bir çeşit makro hilesi içerir. Bu hafta, hiç makro yazmamış Excel kullanıcıları için, kullanışlı bir Excel makrosunun nasıl kaydedileceği ve daha sonra nasıl özelleştirileceği hakkında bir başlangıç sunuyorum.

Sol üstteki şekilde gösterilene benzer 400 satırlık adres veriniz olduğunu varsayalım. Ad alanı A sütununda, sokak adresi B sütununda ve şehir C sütunundadır.
Amacınız, verileri ikinci şekilde gösterildiği gibi tek bir sütuna dönüştürmektir.
Bu basit problem, basit bir makronun nasıl kaydedileceğini, değiştirileceğini ve ardından nasıl çalıştırılacağını göstermek için kullanılacaktır.
Excel 95 kullanıcıları için: Makroyu kaydettikten sonra, Excel, makronuzu çalışma kitabınızdaki Module1 adlı bir sayfaya koyacaktır. Makroya erişmek için sadece sayfaya tıklayabilirsiniz.
Bu çalışma sayfasında 400 kayıt olmasına rağmen, sadece ilk adresle ilgilenen küçük bir makro parçası kaydetmek istiyorum. Makro, hücre işaretleyicisinin ilk adda olduğunu varsayacaktır. Üç boş satır ekleyecektir. Orijinal hücrenin sağındaki hücreyi orijinal hücrenin altındaki hücreye kopyalar. Şehir hücresini, orijinal hücrenin altındaki 2 satıra kopyalayacaktır. Daha sonra hücre işaretçisini bir sonraki adda olması için aşağı hareket ettirmelidir.
Anahtar, kaydetmeden önce bu süreci düşünmektir. Makroyu kaydederken çok fazla hata yapmak istemezsiniz.
Öyleyse, hücre işaretçinizi A1 hücresine koyun. Menüye gidin ve Araçlar> Makro> Yeni Makro Kaydet'i seçin. Makro Kaydet iletişim kutusu Macro1 adını önerir. Bu iyi, bu yüzden Tamam'a basın.
Excel makro kaydedicinin, bu makronun çalışması için kesinlikle değiştirmeniz gereken çok aptal bir varsayılan ayarı vardır. Excel 95'te Araçlar> Makro> Göreli Referansları Kullan'a gidin Excel 97-2003'te Kaydı Durdur Araç Çubuğu'ndaki ikinci simgeye tıklayın. Simge, küçük bir çalışma sayfasına benziyor. C3'teki bir kırmızı hücre, A3'teki başka bir kırmızı hücreyi işaret eder. Simgeye Göreli Referans denir. Bu simge 'açık' olduğunda, simgeyi çevreleyen bir miktar renk vardır. Simge, geçerli Excel oturumundaki son ayarı hatırlar, bu nedenle hangi yöntemin açık olup olmadığını anlamak için birkaç kez tıklamanız gerekebilir. Excel 2007'de Görünüm - Makrolar - Göreli Referansları Kullan'ı kullanın.
Tamam, gitmeye hazırız. Bu adımları takip et:
- B1 hücresine gitmek için aşağı oka bir kez basın.
- 2., 3. ve 4. satırları seçmek için Shift tuşunu basılı tutun ve aşağı oka iki kez basın
- Menüden Ekle'yi seçin, ardından üç boş satır eklemek için Satırlar'ı seçin.
- B2 hücresine gitmek için yukarı oka ve ardından sağ oka basın.
- B2 hücresini kesmek için Ctrl X'e basın.
- A2 hücresine yapıştırmak için aşağı oka, sol oka ve ardından Ctrl V'ye basın.
- C1'i A3'e taşımak için yukarı ok, sağ ok, sağ ok, Ctrl X, sol ok, sol ok, aşağı ok, aşağı ok, Ctrl V tuşlarına basın.
- Aşağı oka iki kez basın, böylece hücre işaretçisi şimdi Satır A5'teki sonraki adda olur.
- Makroyu kaydetmeyi durdurmak için araç çubuğundaki "Kaydı Durdur" simgesine tıklayın.
İlk makronuzu kaydettiniz. Hadi bir bakalım. Araçlar> Makro> Makrolar'a gidin. Listeden, Macro1'i vurgulayın ve Düzenle düğmesine basın. Buna benzer bir şey görmelisiniz.
Sub Macro1() ' ' Macro1 Macro ' Macro recorded 4/18/99 by Reader ' ' ActiveCell.Offset(1, 0).Range("A1:A3").Select Selection.EntireRow.Insert ActiveCell.Offset(-1, 1).Range("A1").Select Selection.Cut ActiveCell.Offset(1, -1).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Selection.Cut ActiveCell.Offset(2, -2).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(2, 0).Range("A1").Select End Sub
Hey, eğer bir programcı değilseniz, bu muhtemelen oldukça korkutucu görünüyor. Olmasına izin verme. Anlamadığınız bir şey varsa, mükemmel bir yardım var. Ofset anahtar kelimesinin herhangi bir yerinde imlecinizi tıklayın ve F1'e basın. VBA yardım dosyasını yüklediyseniz, Offset anahtar sözcüğü için yardım konusunu göreceksiniz. Yardım, size ifadenin sözdizimini söyler. Offset (RowOffset, ColumnOffset) olduğunu söylüyor. Hala çok net değil mi? Yardımın üst kısmındaki yeşil altı çizili "örnek" sözcüğünü bulun. Excel'in VBA örnekleri neler olup bittiğini öğrenmenize izin verecektir. Uzaklık örneğinde, hücreyi geçerli hücrenin iki satır aşağısında ve üç satır sağında etkinleştirmek için şunu kullanacağınızı söyler:
ActiveCell.Offset(3, 2).Activate
Tamam, bu bir ipucu. Uzaklık işlevi, Excel elektronik tablosunda gezinmenin bir yoludur. Bu biraz bilgi verildiğinde, makronun ne yaptığını görebilirsiniz. İlk uzaklık (1, 0) hücre işaretleyicisini A2'ye taşıdığımız yerdir. Sonraki Ofset, bir satır (-1 satır) ve 1 sütun üzerinde ilerlediğimiz yerdir. Makroda başka hiçbir şey anlamayabilirsiniz, ancak yine de faydalıdır.
Excel çalışma sayfasına geri dönün. Hücre işaretçinizi A5 hücresine koyun. Araçlar> Makro> Makrolar> Makro1> Çalıştır'ı seçin. Makro çalışır ve ikinci adresiniz biçimlendirilir.
Bu uzun büyük komut dizisini seçmenin, elle biçimlendirmekten daha zor olduğunu söylüyor olabilirsiniz. Tamam, ardından Araçlar> Makro> Makrolar> Seçenekler'i yapın. Kısayol kutusunda, Ctrl + w'nin bu makro için kısayol tuşu olduğunu söyleyin. Tamam'a tıklayın, ardından Makro iletişim kutusunu İptal ile kapatın. Şimdi, Ctrl w'ye bastığınızda, makro çalışacaktır. Bir adresi tek bir tuşa basarak biçimlendirebilirsiniz.
Büyük zamana hazır mısın? Kaç adresin kaldı? Ctrl wa birkaç kez bastım, bu yüzden 395'im kaldı. Makronuza geri dönün. Makro kodun tamamını bir döngüye koyacağız. Makro kodunun ilk satırından önce "activecell.value =" "" Yapana Kadar Yapın "yazan yeni bir satır ekleyin. End Sub satırından önce "Döngü" yazan bir satır ekleyin. Do döngüsü, boş bir satıra geçene kadar Do ve Loop satırı arasındaki her şeyi yürütür. Makro artık şöyle görünür:
Sub Macro1() ' ' Macro1 Macro ' Macro recorded 4/18/99 by Reader ' ' Do Until ActiveCell.Value = "" ActiveCell.Offset(1, 0).Range("A1:A3").Select Selection.EntireRow.Insert ActiveCell.Offset(-1, 1).Range("A1").Select Selection.Cut ActiveCell.Offset(1, -1).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Selection.Cut ActiveCell.Offset(2, -2).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(2, 0).Range("A1").Select Loop End Sub
Excel sayfanıza geri dönün. Hücre işaretçisini sonraki adın üzerine koyun. Ctrl w'ye basın ve makro tüm kayıtlarınızı birkaç saniye içinde biçimlendirecektir.
Excel kitaplarının yazarları, bir makro kaydederek yararlı hiçbir şey yapamayacağınızı söylüyor. Doğru değil! 800 kere kesip yapıştırmak zorunda kalacak olan kişi için bu makro çok kullanışlı. Kaydetmek ve özelleştirmek birkaç dakika sürdü. Evet, profesyonel programcılar kodun korkunç derecede verimsiz olduğuna işaret edecekler. Excel, oraya koyması gerekmeyen bir sürü şey koyar. Evet, ne yaptığınızı biliyorsanız, 3 saniye yerine 1,2 saniyede çalışacak yarım hatlarla aynı görevi gerçekleştirebilirsiniz. NE OLMUŞ YANİ? 3 saniye, görevin alacağı 30 dakikadan çok daha hızlıdır.
Makro kayıt cihazlarına başlamak için birkaç ipucu:
- Kesme işareti kullanıldığında bir açıklama belirtmek için kullanılır. Kesme işaretinden sonraki her şey VBA tarafından yok sayılır
- Bu, nesne yönelimli programlamadır. Temel sözdizimi object.action'dır. Nesne odaklı bir derleyici futbol oynuyor olsaydı, topa vurmak için "ball.kick" derdi. Bu nedenle "Selection.Cut" geçerli seçim üzerinde "düzenle> kes" yapılmasını söylüyor.
- Yukarıdaki örnekte, Aralık değiştiricileri aktif hücreye göredir. Etkin hücre B2'deyse ve "ActiveCell.Range (" A1: C3 "). Seç" derseniz, B2 hücresinden başlayarak 3 satıra 3 sütun alanını seçersiniz. Diğer bir deyişle, B2: D4'ü seçersiniz. "ActiveCell.Range (" A1 ")" demek, etkin hücre ile başlayan 1 x 1 hücre aralığını seçmenizi söyler. Bu inanılmaz derecede gereksizdir. "ActiveCell.Select" demeye eşdeğerdir.
- Bir makroyu ilk kez çalıştırmadan önce çalışma kitabınızı kaydedin. Bu şekilde, bir hata varsa ve beklenmedik bir şey yaparsa, kaydetmeden kapatabilir ve kaydedilen sürüme geri dönebilirsiniz.
Umarım bu basit örnek, acemi makro kayıt cihazlarına, bir dahaki sefere Excel'de tekrar eden bir göreviniz olduğunda basit bir makro kaydetme cesareti verir.