Belli aralıkta çalışan for döngüsü

VBA Makrolar ile ilgili sormak istedikleriniz, yapmak istedikleriniz hakkında yardım alabileceğiniz bölümdür.

Belli aralıkta çalışan for döngüsü

İleti#1)  onur.var » 02 Arl 2018 22:05

İyi günler;

Basit bir For döngüsü yapmak istedim fakat "Run time error 1004 Application-defined or object- defined error" şeklinde uyarı alıyorum.

"Belli bir aralıktaki satırlara göre C sütunu için boş olan hücrelerin satırlarını kopyala" mantığını yapmaya çalışıyorum.


Kod: Tümünü seç
Sub kalanisler()

Dim satir As Range
Dim boshucre As Range
For Each satir In Range("C7:C37")

If satir = Empty Then Set boshucre = bos
Rows(bos).Copy
Next satir

bos.Copy
End Sub



Nerede hata yaptığımı belirtebilir misiniz?
Kullanıcı avatarı
onur.var
Yeni Başlamış
 
Kayıt: 16 May 2018 20:16
Meslek: Uçak Teknisyeni
Yaş: 27
İleti: 70
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul/ Çatalca

Cevap: Belli aralıkta çalışan for döngüsü

İleti#2)  enes0678 » 03 Arl 2018 02:08

bos değişkeni "empty" olduğu için hata veriyor. Aşağıdaki kodu deneyebilir misiniz?
For Each satir In Range("C7:C37")
If satir = Empty Then
bossatirno = Split(satir.Address(True, False), "$")
bos = bossatirno(1)
Rows(bos).Copy
End If
Next satir
Kullanıcı avatarı
enes0678
 
Kayıt: 19 Oca 2018 15:45
Meslek: öğrenci
Yaş: 73
İleti: 3
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: kayseri

Cevap: Belli aralıkta çalışan for döngüsü

İleti#3)  onur.var » 03 Arl 2018 13:03

Teşekkürler Enes Bey çalışıyor şkşk

Peki aşağıdaki kodu eklemenizin mantığını söyler misiniz?

Kod: Tümünü seç
bossatirno = Split(satir.Address(True, False), "$")
bos = bossatirno(1)


Ya da aşağıdaki kodun yorum satırlarında eksiklerimi söyler misiniz?
Kod: Tümünü seç
Sub kalanisler()

Dim satir As Range          'Range formatında satir değişkenini tanımla
For Each satir In Range("C7:C37")       'C7 ile C37  arasındaki her hücre için...
If satir = Empty Then              'Eğer satır değişkeni boş ise   
bossatirno = Split(satir.Address(True, False), "$")        '????????????*
bos = bossatirno(1)                  bos değişkeni bossatirno(1) değişkenine eşit olsun???????? (1)?
Rows(bos).Copy                      'boş satırın olduğu sütun kopyalansın
End If                        'Satır boş değilse şart bitsin
Next satir            'Satır boş değilse bir sonraki satıra geç

End Sub
Kullanıcı avatarı
onur.var
Yeni Başlamış
 
Kayıt: 16 May 2018 20:16
Meslek: Uçak Teknisyeni
Yaş: 27
İleti: 70
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul/ Çatalca

Cevap: Belli aralıkta çalışan for döngüsü

İleti#4)  enes0678 » 03 Arl 2018 15:07

Merhaba Onur Bey,

boş satırı bulunduğunda satır adresini "satir.Address(True, False)" ile aldım. Çıktı olarak "c$7" "c$8" şeklinde boş olan hücrenin adresini veriyor. Bu adresi split komutu ayırdım 7 veya 8 . satır olduğunu buldum. Sizin yazmış olduğunuz "Set boshucre = bos" komutu anlamadım. Ayrıca Rows(bos).Copy satırı boş hücrelerde çalışacağı için end if ekledim.

Sub kalanisler()

Dim satir As Range 'Range formatında satir değişkenini tanımla
For Each satir In Range("C7:C37") 'C7 ile C37 arasındaki her hücre için...
If satir = Empty Then 'Eğer satır değişkeni boş ise
bossatirno = Split(satir.Address(True, False), "$") 'boş alan adres c$7 ise bossatirno (0)=c bossatirno (1)=7 *
bos = bossatirno(1) 'adresteki satır numarası istendiği için 1
Rows(bos).Copy 'boş satırın olduğu sütun kopyalansın
End If 'Satır boş değilse şart bitsin
Next satir 'Satır boş değilse bir sonraki satıra geç

End Sub
Kullanıcı avatarı
enes0678
 
Kayıt: 19 Oca 2018 15:45
Meslek: öğrenci
Yaş: 73
İleti: 3
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: kayseri

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: Belli aralıkta çalışan for döngüsü

İleti#5)  onur.var » 04 Arl 2018 01:45

Enes Bey ilginize teşekkürler;

Siz detaylı olarak gayet güzel açıklamışsınız fakat ben vba diline tabiri caizse sayfanın ortasından başladığım için kafamda bazı şeyler oturmuyor. Özellikle
Kod: Tümünü seç
bossatirno = Split(satir.Address(True, False), "$") 'boş alan adres c$7 ise bossatirno (0)=c bossatirno (1)=7 *
kodunda True False olayının mantığını ve dolar işaretinin amacını anlamakta güçlük çekiyorum.

Ama bu kodlara öncelikle bu forumda olmak üzere internette araştıracağım,

Teşekkürler şkşk

İyi çalışmalar.
Kullanıcı avatarı
onur.var
Yeni Başlamış
 
Kayıt: 16 May 2018 20:16
Meslek: Uçak Teknisyeni
Yaş: 27
İleti: 70
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul/ Çatalca

Cevap: Belli aralıkta çalışan for döngüsü

İleti#6)  feraz » 04 Arl 2018 17:20

Merhaba.

Msgbox satir.Address(True, False)
Yazarsanız anlarsınız umarım.True yerine 1,False yerinede 0 ekleyebilirsiniz aynı durum.

False ve truelerin yerinide değiştirerek deneyin.
Kullanıcı avatarı
feraz
Site Dostu
 
Kayıt: 19 May 2014 19:36
Konum: Almanya
Meslek: İşçi
Yaş: 39
İleti: 5531
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: Aksaray

REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

Forum Genel Makro Soruları

Online Kullanıcılar

Bu forumu görüntüleyenler: AhrefsBot ve 1 misafir

Bumerang - Yazarkafe