For-Next döngüsünde Kodun kısaltılması

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Merhabalar,

Aşağıda bir bölümünü eklediğim kodda A sütunundan başlayararak Z sütununa kadar; her sütun içerisinde hücreleri birleştirmek düşüncesindeyim;

Kod:
 If j - i > 2 Then

    Range("A" & i & ":A" & j).Select
     Selection.Merge
    Range("B" & i & ":B" & j).Select
        Selection.Merge
            Range("C" & i & ":C" & j).Select
                Selection.Merge
                    Range("D" & i & ":D" & j).Select
                        Selection.Merge

...............
......................

                        Range("Y" & i & ":Y" & j).Select
                           Selection.Merge
                        Range("Z" & i & ":Z" & j).Select
                           Selection.Merge
                        
end if
Yalnız bu şekilde yazmak kodu çok uzatıyor, bu kodları;
Kod:
for
........

next
döngüsü içerisine sokarak kod kısaltılabilirmi?

İyi Çalışmalar.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aşağıdaki gibi olabilir. i ve j'nin değerleri daha önce hesaplanmış olmalı ve tabi ki; sıfırdan büyük olmamalılar

Kod:
For x = 1 To 26
    If j - i > 2 Then:Range(Cells(i, x), Cells(j, x)).Merge
Next x
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Teşekkürler....
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,

Kodları farklı bir yerde çalıştırırken;

"The Selection contains multiple data values. Merging into one cell will keep the upper-left most data only"

uyarı mesajı veriyor, yani birleştirilecek alttaki hücreler dolu olduğu için böyle bir mesaj veriyor.
Alttaki verilerin hepsi aynı ; benim için farketmez bu mesajdan nasıl kurtulurum.

İyi Çalışmalar.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aşağıdakini deneyin.

Kod:
Application.DisplayAlerts = False
For x = 1 To 26
    If j - i > 2 Then: Range(Cells(i, x), Cells(j, x)).Merge
Next x
Application.DisplayAlerts = True
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,359
Excel Vers. ve Dili
Ofis 365 Türkçe
Anladığım kadarıyla önce hücrelerin içeriklerini birleştiriyorsunuz, sonra Merge ediyorsunuz.

Aşağıdaki kodları dener misiniz?


Kod:
Sub Birlestir()
For i = 1 To [A65536].End(3).Row
    For j = 2 To 26
        Cells(i, 1) = Cells(i, 1) & Cells(i, j)
    Next j
    Range(Cells(i, 2), Cells(i, 26)).Clear
    Range(Cells(i, 1), Cells(i, 26)).Merge
Next i
End Sub
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,043
Excel Vers. ve Dili
Office 2013 İngilizce
Kod:
Application.DisplayAlerts = False
bütün olayı çözdü,

elinize sağlık...
 
Üst