• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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?
 
Merhaba,
Kod:
Sub SatırSay()
    ss=Selection.Rows.Count
    MsgBox  ss
End Sub
 
Ç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 ?
 
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
 
FillDown ya da AutoFill komutlarını araştırabilirsiniz.
 
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.
 
Lütfen örnek dosyanız üzerinde tarif ediniz.
 
Satır ekle dediğinizde A2:AA7 alanını blok olarak alta doğru çoğaltmak mı istiyorsunuz?
 
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?
 
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.
 
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.
 
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.
 
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.
 
Geri
Üst