İki değer arası hücrelerin seçilmesi

Katılım
18 Mart 2021
Mesajlar
26
Excel Vers. ve Dili
2016. Türkçe
Üstatlar;

Macrolardan çok anlamama rağmen siteyi karıştıra karıştıra birşeyler yaptım işimi gören. Macronun bir yerinde

Range("A11:A23").Select
Selection.Borders(xlEdgeleft).LineStyle = 1
Selection.Borders(xlEdgeTop).LineStyle = 1
Selection.Borders(xlEdgeBottom).LineStyle = 1
Selection.Borders(xlEdgeRight).LineStyle = 1

ile kendimce A11 ile A23 hücrelerini seçip çerçeve yaptırdım. Lakin şunu farkettim ki benim A23 hücrem sabit değil bir çalışma sayfasında A30 da bazen A27 bazen A40 sürekli değişken ama bu hücre A kaçta olursa olsun içinde sabit begüm yazıyor.
Bu komutu A11'den başlatıp begüm A kaçta ise oraya kadar seçtirebilirmiyim.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
Merhaba
hcrRow: aradığınız verinin bulunduğu satır no
Range("A11:A"&hcrRow).Select

Örnek dosya ekleseniz iyi olurdu, çözüm yolunu sitede bulabilirsiniz.
 
Katılım
18 Mart 2021
Mesajlar
26
Excel Vers. ve Dili
2016. Türkçe
Merhaba
hcrRow: aradığınız verinin bulunduğu satır no
Range("A11:A"&hcrRow).Select

Örnek dosya ekleseniz iyi olurdu, çözüm yolunu sitede bulabilirsiniz.

ekleyebildim mi bilmiyorum ama Açıklamalar yazan hücre ile bgm yazan hücrelerin arasını seçmek istiyorum. Her çalışma sayfasında madde sayısı farklı olduğu için. bgm nin olduğu hücreler farklı yerde
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,373
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

A11 hücresi sabit mi
A23 A sütunundaki son dolu hücre midir?

Son dolu hücre değilse bu hücreden sonra dolu olan hücreler var mı?
Varsa A11 den başlayarak sadece ardışık olarak hücre değerleri aynı mı, sizin deyiminizle "begüm"

Yani kısaca anlaşılır bir soru gibi gelmedi bana. Yukardaki seçeneklere göre çözümler de farklı olabilir.
Kod yazacak kişi ezbere yazmak istemez, boşa çabadır bu.
Paylaşım sitelerinden birine örnek dosyanızı yüklerseniz daha net ve hızlı yanıt alabilirsiniz.
 
Katılım
18 Mart 2021
Mesajlar
26
Excel Vers. ve Dili
2016. Türkçe
Merhaba,

A11 hücresi sabit mi
A23 A sütunundaki son dolu hücre midir?

Son dolu hücre değilse bu hücreden sonra dolu olan hücreler var mı?
Varsa A11 den başlayarak sadece ardışık olarak hücre değerleri aynı mı, sizin deyiminizle "begüm"

Yani kısaca anlaşılır bir soru gibi gelmedi bana. Yukardaki seçeneklere göre çözümler de farklı olabilir.
Kod yazacak kişi ezbere yazmak istemez, boşa çabadır bu.
Paylaşım sitelerinden birine örnek dosyanızı yüklerseniz daha net ve hızlı yanıt alabilirsiniz.
İlginiz için teşekkür ederim. Biraz daha kurcalayınca
Range("A1:A100").Find("begüm").Select
Range(ActiveCell, "A11").Select ile çözdüm gibi. Amacıma ulşamazsam sizleri rahatsız ederim tekrar.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,267
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Makrolara yeni başlayanlara MAKRO KAYDET yöntemini kullanmalarını tavsiye ediyorum. Gelişme aşamasında oldukça işe yarıyor.

Aşağıdaki adımları izledim.

Örnek dosyanızı açtım.
MAKRO KAYDET tuşuana bastım.
A11 hücresine tıkladım.
CTRL+SHIFT+AŞAĞI OK tuşlarına basarak A1:A... son hücreye kadar hücreleri seçtim.
Önce varolan kenarlıkları kenarlık menüsü yardımıyla temizledim.
Sonra tekrar A11 hücresine tıkladım.
F5 tuşuna bastım.
Özel seçeneğini seçtim.
"Geçerli bölge" seçeneğini seçerek TAMAM tuşuna bastım.
Kenarlık menüsünden sizin istediğiniz çevre kenarlığını seçtim.
Sonra makro kaydını durdurdum.

Aşağıdaki kodlar oluştu.

C++:
Option Explicit

Sub Makro1()
    Range("A11").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Range("A11").Select
    Selection.CurrentRegion.Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub
Bu kadar basit bir işlem için oluşan bu kodlar hücrelerdeki her çizginin; rengini, kalınlığını ayarlayan özellikler içermektedir. Bu sebeple bu kadar uzun bir kod bloğu oluşmaktadır. Kodu bu haliyle de kullanabilirsiniz. Ama neden daha sade bir kod ile bu işi halletmek varken bu uzun kodu kullanalım ki...

İş aslında buradan sonra başlıyor. Buradaki fazla satırları temizleyerek makromuzu daha sade ve anlaşılır hale getirmek gerekiyor. Zaten bu düşünceye kapıldığınız anda artık profesyonelleşme yönünde ilk adımı atmış oluyorsunuz.

Aşağıdaki daha sade kod bloğu ile bu işlemi yapabilirsiniz... Siz de bu komutları araştırarak işe koyulabilirsiniz.

C++:
Option Explicit

Sub Kenarlik_Ekle()
    Range("A11:A" & Rows.Count).Borders.LineStyle = xlNone
    Range("A11").CurrentRegion.BorderAround 1, xlThin
End Sub
 
Katılım
18 Mart 2021
Mesajlar
26
Excel Vers. ve Dili
2016. Türkçe
Merhaba,

Makrolara yeni başlayanlara MAKRO KAYDET yöntemini kullanmalarını tavsiye ediyorum. Gelişme aşamasında oldukça işe yarıyor.

Aşağıdaki adımları izledim.

Örnek dosyanızı açtım.
MAKRO KAYDET tuşuana bastım.
A11 hücresine tıkladım.
CTRL+SHIFT+AŞAĞI OK tuşlarına basarak A1:A... son hücreye kadar hücreleri seçtim.
Önce varolan kenarlıkları kenarlık menüsü yardımıyla temizledim.
Sonra tekrar A11 hücresine tıkladım.
F5 tuşuna bastım.
Özel seçeneğini seçtim.
"Geçerli bölge" seçeneğini seçerek TAMAM tuşuna bastım.
Kenarlık menüsünden sizin istediğiniz çevre kenarlığını seçtim.
Sonra makro kaydını durdurdum.

Aşağıdaki kodlar oluştu.

C++:
Option Explicit

Sub Makro1()
    Range("A11").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Range("A11").Select
    Selection.CurrentRegion.Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub
Bu kadar basit bir işlem için oluşan bu kodlar hücrelerdeki her çizginin; rengini, kalınlığını ayarlayan özellikler içermektedir. Bu sebeple bu kadar uzun bir kod bloğu oluşmaktadır. Kodu bu haliyle de kullanabilirsiniz. Ama neden daha sade bir kod ile bu işi halletmek varken bu uzun kodu kullanalım ki...

İş aslında buradan sonra başlıyor. Buradaki fazla satırları temizleyerek makromuzu daha sade ve anlaşılır hale getirmek gerekiyor. Zaten bu düşünceye kapıldığınız anda artık profesyonelleşme yönünde ilk adımı atmış oluyorsunuz.

Aşağıdaki daha sade kod bloğu ile bu işlemi yapabilirsiniz... Siz de bu komutları araştırarak işe koyulabilirsiniz.

C++:
Option Explicit

Sub Kenarlik_Ekle()
    Range("A11:A" & Rows.Count).Borders.LineStyle = xlNone
    Range("A11").CurrentRegion.BorderAround 1, xlThin
End Sub
Teşekkür ederim. Bu özelliği bilmiyordum. Süpersiniz
 
Üst