vba da belli bir alanı seçme işlemi

Katılım
12 Şubat 2019
Mesajlar
115
Excel Vers. ve Dili
Vera. 10 Dil Türkçe
Merhaba,
Makro ile açtığım başka bir excel dosyasında belli bir alanı seçip boş olan hücrelere tire işareti atamak istiyorum.
Başlangıç hücrem A1
son satır formülünü aşağıdaki gibi kullanıp buluyorum.
ActiveSheet.Range("A1").Select
SonSat = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
ActiveSheet.Cells(SonSat, "A").Select
i2 = ActiveCell.Row

ama son sütun formülünü aşağıdaki gibi bulmaya çalışıyorum ama doğru mu bilmiyorum.

sonsütun = ActiveCell.SpecialCells(xlLastCell).Column

sonrada aşağıdaki kodu yazıyorum fakat hata alıyorum.

ActiveSheet.Range("A1:sonsütun" & i2).Select

konu hakkonda yardımlarını rica ederim.
 
Katılım
18 Ocak 2019
Mesajlar
234
Excel Vers. ve Dili
Office 2013
Merhaba @Öz1.618

İşlem için seçmek şart değil,
Deneyiniz..

Kod:
Sub TIRE_DOLDUR()
sonsut = ActiveSheet.Cells.SpecialCells(xlLastCell).Column
sonsat = ActiveSheet.Cells.SpecialCells(xlLastCell).Row
For Each hcr In Range(Cells(1, 1), Cells(sonsat, sonsut))
    If hcr = Empty Then hcr.Value = "-"
Next
End Sub
 

kulomer46

Altın Üye
Katılım
23 Mart 2007
Mesajlar
1,514
Excel Vers. ve Dili
Microsoft Office LTSC Professional Plus 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
08-06-2027
Merhaba

Aşağıdaki Kod A1 hücresi ile Son satırsütun arasını seçmektedir.

Selamlar...
Kod:
Sub A1_Hücresi_ile_SonSatırSütun_Arasını_Sec()

sonsatır = ActiveCell.SpecialCells(xlLastCell).Row
sonsütun = ActiveCell.SpecialCells(xlLastCell).Column

Range(Cells(1, 1), Cells(sonsatır, sonsütun)).Select

End Sub
 

EmrExcel16

Destek Ekibi
Destek Ekibi
Katılım
1 Kasım 2012
Mesajlar
1,524
Excel Vers. ve Dili
Office 365 Türkçe
Alternatif olarak.

Kod:
Sub test()   
    On Error Resume Next
    SonSat = Cells(Rows.Count, 1).End(3).Row
    SonSut = Range("A" & SonSat).SpecialCells(xlLastCell).Column
    Range(Cells(1, 1), Cells(SonSat, SonSut)).SpecialCells(xlCellTypeBlanks) = "-"
End Sub
 
Katılım
12 Şubat 2019
Mesajlar
115
Excel Vers. ve Dili
Vera. 10 Dil Türkçe
Merhaba @Öz1.618

İşlem için seçmek şart değil,
Deneyiniz..

Kod:
Sub TIRE_DOLDUR()
sonsut = ActiveSheet.Cells.SpecialCells(xlLastCell).Column
sonsat = ActiveSheet.Cells.SpecialCells(xlLastCell).Row
For Each hcr In Range(Cells(1, 1), Cells(sonsat, sonsut))
    If hcr = Empty Then hcr.Value = "-"
Next
End Sub
Merhaba Hepgel
ana excel dosyamdaki boş olan bütün dosyalarımna tire atıyor.
Burada iki problem var.
birincisi formülün ana excel dosyamda işlemesi ikincisi bütün hücrelere uygulaması.
oysaki ben son dolu satır ve son dolu hücre arasında bu işlemin yapılmasını istiyorum.
 
Katılım
12 Şubat 2019
Mesajlar
115
Excel Vers. ve Dili
Vera. 10 Dil Türkçe
Merhaba

Aşağıdaki Kod A1 hücresi ile Son satırsütun arasını seçmektedir.

Selamlar...
Kod:
Sub A1_Hücresi_ile_SonSatırSütun_Arasını_Sec()

sonsatır = ActiveCell.SpecialCells(xlLastCell).Row
sonsütun = ActiveCell.SpecialCells(xlLastCell).Column

Range(Cells(1, 1), Cells(sonsatır, sonsütun)).Select

End Sub
hocam bu kod a1 hücresinden son sütuna kadar gidip aşağıya doğru bütün hücreleri alıyor. ve yine ana excelimde çalışıyor.
ben vba da açtığım başka bir excel dosyası üzerinde yapmak istiyorum işlemi.
 
Katılım
18 Ocak 2019
Mesajlar
234
Excel Vers. ve Dili
Office 2013
alandaki boş hücreleri seçmek için ActiveSheet.Cells.SpecialCells(xlCellTypeBlanks).Select
alandaki boş hücrelere - yazdırmak için ise ActiveSheet.Cells.SpecialCells(xlCellTypeBlanks) = "-"
kod satırı yeterli olur @Öz1.618
 
Katılım
12 Şubat 2019
Mesajlar
115
Excel Vers. ve Dili
Vera. 10 Dil Türkçe
Alternatif olarak.

Kod:
Sub test()  
    On Error Resume Next
    SonSat = Cells(Rows.Count, 1).End(3).Row
    SonSut = Range("A" & SonSat).SpecialCells(xlLastCell).Column
    Range(Cells(1, 1), Cells(SonSat, SonSut)).SpecialCells(xlCellTypeBlanks) = "-"
End Sub
merhaba emre bey
diyelimki benim vba çalıştırdığım excelin ismi A olsun ben vba da demek istiyorum ki git B excelini şu klasörden aç ve son dolu satır ile son dolu sütun u bul (kare şeklinde bir tablo oluyor bu) arasında kalan bütün boş hücrelere tire ata. o yüzden B sütununda hücre seçmek istediğim zaman sadecerange yemiyor. activesheet.range demem gerekiyor.
 
Katılım
18 Ocak 2019
Mesajlar
234
Excel Vers. ve Dili
Office 2013
Önc bundan önceki cevabımı okuyun.
Şyle bir şey de olabilir.
Belgedeki son hücre kullanılmış son hücredir, dolu olan son hücre değil.
Daha önce veri yazılmış, kullanılmış ise hücreyi silseniz de hücre artık kullanılmıştır ve son hücre olarak görülür.
 
Katılım
12 Şubat 2019
Mesajlar
115
Excel Vers. ve Dili
Vera. 10 Dil Türkçe
alandaki boş hücreleri seçmek için ActiveSheet.Cells.SpecialCells(xlCellTypeBlanks).Select
alandaki boş hücrelere - yazdırmak için ise ActiveSheet.Cells.SpecialCells(xlCellTypeBlanks) = "-"
kod satırı yeterli olur @Öz1.618
hocam bütün dosyada boş olan yerleri seçiyor. 1048576. hücreye kadar iniyor.
 
Katılım
12 Şubat 2019
Mesajlar
115
Excel Vers. ve Dili
Vera. 10 Dil Türkçe
Önc bundan önceki cevabımı okuyun.
Şyle bir şey de olabilir.
Belgedeki son hücre kullanılmış son hücredir, dolu olan son hücre değil.
Daha önce veri yazılmış, kullanılmış ise hücreyi silseniz de hücre artık kullanılmıştır ve son hücre olarak görülür.
evet işlemler yapıp sildiğim hücreler var. Ama yinede bütün boş hücreleri seçmemesi lazım.
Çözemedim hala uğraşıyorum.
Teşekkür ederim.
 
Katılım
12 Şubat 2019
Mesajlar
115
Excel Vers. ve Dili
Vera. 10 Dil Türkçe
Seçmek istediğim alan A1 den AR1350 arası bu arada.
 
Katılım
18 Ocak 2019
Mesajlar
234
Excel Vers. ve Dili
Office 2013
Bir de bu şekilde deneyin.
Kod:
Sub TIRE_DOLDUR()
sonsatir = ActiveSheet.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
sonsutun = ActiveSheet.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
For Each hcr In ActiveSheet.Range(Cells(1, 1), Cells(sonsatir, sonsutun))
    If hcr = Empty Then hcr.Value = "-"
Next
End Sub
 
Katılım
12 Şubat 2019
Mesajlar
115
Excel Vers. ve Dili
Vera. 10 Dil Türkçe
Bir de bu şekilde deneyin.
Kod:
Sub TIRE_DOLDUR()
sonsatir = ActiveSheet.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
sonsutun = ActiveSheet.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
For Each hcr In ActiveSheet.Range(Cells(1, 1), Cells(sonsatir, sonsutun))
    If hcr = Empty Then hcr.Value = "-"
Next
End Sub
For Each hcr In ActiveSheet.Range(Cells(1, 1), Cells(sonsatir, sonsutun)) şu bölümde hata verdi hocam.
 
Katılım
12 Şubat 2019
Mesajlar
115
Excel Vers. ve Dili
Vera. 10 Dil Türkçe
Bir de bu şekilde deneyin.
Kod:
Sub TIRE_DOLDUR()
sonsatir = ActiveSheet.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
sonsutun = ActiveSheet.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
For Each hcr In ActiveSheet.Range(Cells(1, 1), Cells(sonsatir, sonsutun))
    If hcr = Empty Then hcr.Value = "-"
Next
End Sub
bu sırada kodda problem yok.
Kodu eğer çalıştırmak istediğim excel dosyasının kendşi vba sayfasında yazsaydım çalışıyor. bir ufak değişiklik daha lazım gibi hocam.
 
Katılım
12 Şubat 2019
Mesajlar
115
Excel Vers. ve Dili
Vera. 10 Dil Türkçe
bu sırada kodda problem yok.
Kodu eğer çalıştırmak istediğim excel dosyasının kendşi vba sayfasında yazsaydım çalışıyor. bir ufak değişiklik daha lazım gibi hocam.
bu sırada kod şu şekilde çalışıyor.
ğer bir sütunda hiç değer yok ise o zaman o sütunun bütünü boş olduğu için tire atıyor fakat bir sütunda tek bir hücre dahi doluysa o zaman o sütunun içindeki hiçbir boş hücreye tire atamıyor boş geçiyor hocam.
 
Katılım
18 Ocak 2019
Mesajlar
234
Excel Vers. ve Dili
Office 2013
Bu şekilde sorun görünmüyor.

Kod:
Sub TIRE_DOLDUR()
sonsatir = ActiveSheet.Cells.Find(What:="*", After:=ActiveSheet.[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
sonsutun = ActiveSheet.Cells.Find(What:="*", After:=ActiveSheet.[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
For Each hcr In ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(sonsatir, sonsutun))
    If hcr = Empty Then hcr.Value = "-"
Next
End Sub
 

EmrExcel16

Destek Ekibi
Destek Ekibi
Katılım
1 Kasım 2012
Mesajlar
1,524
Excel Vers. ve Dili
Office 365 Türkçe
merhaba emre bey
diyelimki benim vba çalıştırdığım excelin ismi A olsun ben vba da demek istiyorum ki git B excelini şu klasörden aç ve son dolu satır ile son dolu sütun u bul (kare şeklinde bir tablo oluyor bu) arasında kalan bütün boş hücrelere tire ata. o yüzden B sütununda hücre seçmek istediğim zaman sadecerange yemiyor. activesheet.range demem gerekiyor.
Merhaba , aktif olan sayfa için tekrardan kodlar da "activesheet" diye belirtmeye gerek yoktur , hiçbir belirtme yapılmaz ise kodlar aktif olan sayfa için geçerli olur. En azından benim verdiğim kodlar için durum bu şekilde. Eğer hata oluşuyor ise diğer kodlarınızı görmek gerekir.
 
Katılım
12 Şubat 2019
Mesajlar
115
Excel Vers. ve Dili
Vera. 10 Dil Türkçe
Bu şekilde sorun görünmüyor.

Kod:
Sub TIRE_DOLDUR()
sonsatir = ActiveSheet.Cells.Find(What:="*", After:=ActiveSheet.[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
sonsutun = ActiveSheet.Cells.Find(What:="*", After:=ActiveSheet.[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
For Each hcr In ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(sonsatir, sonsutun))
    If hcr = Empty Then hcr.Value = "-"
Next
End Sub
Hocam bazılarına atamış bazılarına atamamış.
Ben bazı alanlarda araya sütunlar açıyorum bazı sütunları kes kopyala yapıştır yöntemi ile taşıyorum. Muhtemelen problem bu işlemleri yaptığım için oluyor.
 
Katılım
12 Şubat 2019
Mesajlar
115
Excel Vers. ve Dili
Vera. 10 Dil Türkçe
Merhaba , aktif olan sayfa için tekrardan kodlar da "activesheet" diye belirtmeye gerek yoktur , hiçbir belirtme yapılmaz ise kodlar aktif olan sayfa için geçerli olur. En azından benim verdiğim kodlar için durum bu şekilde. Eğer hata oluşuyor ise diğer kodlarınızı görmek gerekir.
Emre bey aktif olan sayfada olmayabilir ama aktif olan dosyada problem oluyor activesheet yazmayınca.
 
Üst