Soru Kaç Satır Seçili?

Katılım
15 Haziran 2021
Mesajlar
147
Excel Vers. ve Dili
Office 2016
Merhaba

Makro ile satır eklettiğim bir kod hazırladım. Bu kod satır ekleyip eklenen satırın formülünü alttaki satıra göre düzenliyor. Fakat 2 satır eklediğimde yada 3 satır eklediğimde de aynı işlemi yapmak istiyorum. O an seçtiğim satırın sayısını nasıl tespit edebilirim? Bu sayıyı değişkene tanımlayıp işlemi bir for döngüsüyle yapmak istiyorum.


Nasıl yapabilirim?
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,605
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Merhaba,
Kod:
Sub SatırSay()
    ss=Selection.Rows.Count
    MsgBox  ss
End Sub
 
Katılım
15 Haziran 2021
Mesajlar
147
Excel Vers. ve Dili
Office 2016
Çok teşekkürler.

Seçili satır adetini ve seçili satırın numarasını değişkene atadım. Satır ekleme kodunu makro kaydederek almıştım. Eklenen satırların t,u,w sütunlarını üst satırdaki formülden almaya çalıştım ama olmadı. Bunun basit bir yolu var mıdır ?
 
Katılım
15 Haziran 2021
Mesajlar
147
Excel Vers. ve Dili
Office 2016
Merhaba,
Kod:
Sub SatırSay()
    ss=Selection.Rows.Count
    MsgBox  ss
End Sub
Şöyle yapmaya çalıştım ama olmadı.

Sub Makro4()
don = Selection.Rows.Count
x = ActiveCell.Row
y = ActiveCell.Row + 1
For a = 1 To don
ActiveCell.EntireRow.Select
For i = 1 To 1
Sayfa2.Cells(y, "T").Select
Selection.Copy
Sayfa2.Cells(x, "T").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sayfa2.Cells(y, "U").Select
Selection.Copy
Sayfa2.Cells(x, "U").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sayfa2.Cells(y, "Y").Select
Selection.Copy
Sayfa2.Cells(x, "Y").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sayfa2.Cells(y, "Z").Select
Selection.Copy
Sayfa2.Cells(x, "Z").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Next i
Next a
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
FillDown ya da AutoFill komutlarını araştırabilirsiniz.
 
Katılım
15 Haziran 2021
Mesajlar
147
Excel Vers. ve Dili
Office 2016
FillDown ya da AutoFill komutlarını araştırabilirsiniz.
Kod:
Sub Makro4()
don = Selection.Rows.Count
x = ActiveCell.Row
y = ActiveCell.Row + 1
For a = 1 To don
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Call Modulo2.MyAutoFill
Next a
End Sub
Kod:
Public Sub MyAutoFill()
Dim selection1 As Range
Dim selection2 As Range

Set selection1 = ActiveCell.Row
Set selection2 = ActiveCell.Row + don

selection1.AutoFill Destination:=selection2

End Sub
Karhan bey merhaba. Auto fill özelliğine şu şekilde kullanmayı denedim. Makroyu çalıştırdığımda burada hata alıyorum.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Lütfen örnek dosyanız üzerinde tarif ediniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Satır ekle dediğinizde A2:AA7 alanını blok olarak alta doğru çoğaltmak mı istiyorsunuz?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Benim bahsettiğim şu şekildeydi. A2:AA7 aralığını kopyala tablonun en altındaki ilk boş alana yapıştır. İçi temizlenecek alanları temizle şeklindeydi. Zaten formüllerde kopyalanacağı için sorun olmayacaktır.

Ama siz soruma "Evet" dedikten sonra seçili satır ifadesini kullanınca durum değişir.

Bir örnekle açıklarmısınız?
 
Katılım
15 Haziran 2021
Mesajlar
147
Excel Vers. ve Dili
Office 2016
Benim bahsettiğim şu şekildeydi. A2:AA7 aralığını kopyala tablonun en altındaki ilk boş alana yapıştır. İçi temizlenecek alanları temizle şeklindeydi. Zaten formüllerde kopyalanacağı için sorun olmayacaktır.

Ama siz soruma "Evet" dedikten sonra seçili satır ifadesini kullanınca durum değişir.

Bir örnekle açıklar mısınız?
Şöyle ki datanın ilk satırı başlıklar. Sonrası 6 satır + 6 satır şeklinde renklendirilmiş kümeler olarak gidiyor. Ben 6. satırı seçip satır ekle dersem 6.satırın bir üstüne(5-6 arasına) satır ekleyip formülünü 6. satırdaki yada 5. satırdaki gibi yapması gerekiyor. Eğer 5. ve 6. satırı seçerek ekle dersem aynı şekilde 2 satır ekleyip formülize etmesini istiyorum. Formül olan sütünlar (I,U,V,Z,AA) bu sütünlarda toplatma bağ değer say gibi formüller var.
 
Katılım
15 Haziran 2021
Mesajlar
147
Excel Vers. ve Dili
Office 2016
Benim bahsettiğim şu şekildeydi. A2:AA7 aralığını kopyala tablonun en altındaki ilk boş alana yapıştır. İçi temizlenecek alanları temizle şeklindeydi. Zaten formüllerde kopyalanacağı için sorun olmayacaktır.

Ama siz soruma "Evet" dedikten sonra seçili satır ifadesini kullanınca durum değişir.

Bir örnekle açıklarmısınız?
Kod:
Sub satrek()
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
a = Selection.Row
b = a - 1
Sayfa1.Range(a, "V").Select
Sayfa1.Range(b, "V").Select
Selection.FillDown
End Sub
Şöyle denedim ama olmuyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,193
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
V sütunundaki formülü aşağıdaki gibi değiştiriniz.

V2 hücresine uygulayıp alta doğru sürükleyiniz.

C++:
=EĞER(W2<>"";W2;DOLAYLI("V"&ROW()-1))
Sonrasında aşağıdaki kodu deneyiniz.

C++:
Sub Rows_Insert()
    Selection.EntireRow.Copy
    Selection.EntireRow.Insert Shift:=xlDown
    Intersect(Selection.EntireRow, Range("I:T")).ClearContents
End Sub
Formülleriniz her satır için standart yapıda olmadığı için diğer alanlarda bazı sorunlar yaşayabilirsiniz.
 
Katılım
15 Haziran 2021
Mesajlar
147
Excel Vers. ve Dili
Office 2016
V sütunundaki formülü aşağıdaki gibi değiştiriniz.

V2 hücresine uygulayıp alta doğru sürükleyiniz.

C++:
=EĞER(W2<>"";W2;DOLAYLI("V"&ROW()-1))
Sonrasında aşağıdaki kodu deneyiniz.

C++:
Sub Rows_Insert()
    Selection.EntireRow.Copy
    Selection.EntireRow.Insert Shift:=xlDown
    Intersect(Selection.EntireRow, Range("I:T")).ClearContents
End Sub
Formülleriniz her satır için standart yapıda olmadığı için diğer alanlarda bazı sorunlar yaşayabilirsiniz.
Çok teşekkür ederim.
 
Üst