Degisken tanimlanmis olan hucrelerde aralik secmek ACIL!

Katılım
6 Temmuz 2006
Mesajlar
15
Merhabalar,

Bir makro yazdim..Son satira kadar gayet iyi calisiyor, fakat en son satirda yaptirmam gereken islemi bir turlu beceremedim. Forumu da aradim fakat sorunuma yanit goremedim. Olay kisaca soyle:

Kullanici rastgele bir hucre seciyor (orn. F13). Sonra secilen bu hucrenin satir ve sutun degerleri, Integer olarak tanimlanmis olan a ve b gibi iki adet degiskene yukleniyor.

...
a = ActiveCell.Column
b = ActiveCell.Row
...

Daha sonra, bu ilk basta secilmis olan hucre (F13) referans aliniyor ve bu hucreye gore ayni sutunun 3 satir asagisindaki bulunan hucreye (F16) geliniyor. Ve iste orada;

Bir baska dosyanin G29:J50 araligindan (bu deger sabit) halihazirda kopyalanmis olan degerler bir araliga yapistiriliyor. Yapistirilacak olan aralik yukarida alinmis olan F13 referansin goz onune alindiginda, bu durumda F16:G37 araligi oluyor. Ama tabi degisken olmali kodlamada. Cunku kullanicinin ilk basta sececegi hucrenin ne oldugu sabit degil!!! Olay da zaten buradan cikiyor... Kopyalama ve yapistirma kodlari asagidaki gibi...Koyu olarak belirtilmis olan kisimda hata var.. Zaten o olsa makro da calisacak :)

'Kopyalama
Windows(2).Activate 'verilerin kopyalanacagi dosyaya gecis
Sheets("Veriler").Select 'o dosyanin veriler tabini secis
Range("g29:i50").Select
Selection.Copy

'Yapistirma
Windows(2).Activate 'ana dosyaya gecis
ActiveSheet.Cells(b + 3, a).Activate
range(a & b+3:a+1 & b+24).select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveSheet.Cells(reihe, spalte).Activate

Ozetle;

Range("f16:g37").Select gibi birsey yazip yapistirmak olayin ozu. Ama olayin icinde degisken girince biraz tikandim...

Yardimlariniz icin simdiden cok tesekkurler, iyi calismalar...

Kadir
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Kopyaladığınız veriyi yapıştıracağınız tüm alanı seçmeye gerek yok. Sadece seçilen hücreye yapıştırmak yeterli. Aşağıdaki gibi deneyin. Seçilen hücrenin 3 satır aşağısına yapıştırılır.

range(a & b+3:a+1 & b+24).select

Yukarıdaki satırı aşağıdaki ile değiştirin.

activecell.offset(3,0).select
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

range(a & b+3:a+1 & b+24).select
bu satırı hiç kullanmayın.silin

Yani yapıştırılacak alanı seçmenize gerek yok .aktif olan hücreyi şeçip yapıştır diyin.
 
Katılım
6 Temmuz 2006
Mesajlar
15
Bu kadar cabuk cevap gelmesi cok hos. Cok sagolun Levent Bey...Sorun cozulmustur. Bazen kayboluyor insan kodlarin icinde :?

Yalniz bir sorum daha var. Bende surekli hata veren o range komutunun kullanim bicimi o sekilde degil mi? Neden hata veriyordu surekli?

Elinize akliniza saglik, iyi calismalar

Kadir
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Eğer range komutunda satır ve sütun değişken ise aşağıdaki gibi kullanmanız gerekir.

range(cells(b+3,a),cells(b+24,a+4)).select
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

Sn.Leventm sanki ağız birliği etmiş gibi.....
 
Katılım
6 Temmuz 2006
Mesajlar
15
range komutunun kullanim bicimini de boylece ogrenmis olduk. iyi oldu. cok tesekkur ederim Levent Bey ve Zafer Bey

Iyi gunler, Kadir
 
Üst