- Katılım
- 25 Ocak 2009
- Mesajlar
- 110
- Excel Vers. ve Dili
- Excel-2007 Türkçe
Merhaba arkadaşlar aşağıda açıklayacağım soruna nasıl bir çare bulabiliriz acaba?
For j=1 To kesit_sayisi Step 1
userform1.Show(1)
! Burada herbir yeni kesitin veri girişi için bir userform açılıyor j=1.kesit; j=2.kesit şeklinde gidiyor ve bu verileri excelin ilgili hücrelerine atama işlemi yapılıyor.
!Bu userform1 e ait ileri_command butonunun Tıklanmasıyla çalışan kod da şu şekilde;
Sub ileri_command1_Click()
Dim m As Integer
If Sayfa2.Range("E2") = "" Then
Sayfa2.Select
Sayfa2.Range("E2").Select
ActiveCell.Value = donati_sirasi_adedi_text.Value * 1
ActiveCell.Offset(0, -1) = paspayi_text.Value * 1
ActiveCell.Offset(0, 1) = donati_capi_text.Value * 1
ActiveCell.Offset(0, -2) = kesit_yuksekligi_text.Value * 1
ActiveCell.Offset(0, -3) = kesit_genisligi_text.Value * 1
Sayfa1.Select
Else
Sayfa2.Select
Sayfa2.Cells(1048576, 5).End(xlUp).Select
m = ActiveCell.Value
ActiveCell.Offset(m, 0).Select
ActiveCell.Value = donati_sirasi_adedi_text.Value * 1
ActiveCell.Offset(0, -1) = paspayi_text.Value * 1
ActiveCell.Offset(0, 1) = donati_capi_text.Value * 1
ActiveCell.Offset(0, -2) = kesit_yuksekligi_text.Value * 1
ActiveCell.Offset(0, -3) = kesit_genisligi_text.Value * 1
Sayfa1.Select
End If
userform1.Hide
End Sub
Butona tıklanmasıyla program Sayfa2' nin E2 hücresi boş ise userformun textboxlarından ''donati_sirasi_text'' adındaki metin kutusunun(textbox) değerini 1 ile çarpıyor ki, bu sayede değerin metin olmaktan çıkıp sayısal bir tipe girmesini sağlıyorum ve bu değerin seçili hale getirdiğim E2 hücresine atanmasını gerçekleştiriyorum.
Daha sonra hala aktif (seçili) durumdaki E2 hücresini (ActiveCell)'i ActiveCell.Offset(0,-1) ifadesiyle aktif hücrenin E2 hücresi ile aynı satırda ( 0 ile satırda oynama yapılmadığı ifade ediliyor) fakat -1 yazarak E2 hücresinin 1 sütun solunda ( - olması nedeniyle ) olan hücre olması sağlanıyor. Bu seçili hale gelen yeni aktif hücreye de ilgili userform 'un ''paspayı_text'' adındaki metin kutusunda bulunan değeri atanıyor.
Soruma gelmeden lütfen üstadlar beni bağışlasın sorumu sormadan benden daha az bilgide olanlara da yardımcı olmak ve yaptığım işlemi kısaltabileceğini düşündüğümüz arkadaşlarla da beyin fırtınası yapmak amacıyla biraz daha ayrıntılı yazmaya özen gösteriyorum elimden geldiğince; o yüzden sıkılmadığınızı umarak devam ediyorum.
Eğer E2 hücresi boş değilse E2'ye veri girişi yapılmışsa 2.veri girişi için 5. sütunun en son satırından yani 1048576.satırdan yukarıya doğru dolu gördüğün ilk hücreyi bul ve seç; seçmenle aktif hale gelen bu hücrenin değerini m değişkenine ata ve bu aktif hücrenin içindeki m değeri kadar aşağı satırına git ve bu yeni hücreyi aktif hale getir ve artık yeni veri girişini bu yeni hücreye ve bu yeni hücreyi referans alarak yapmaya başla şeklinde bir komut yazımı söz konusu.
Bilmiyorum ne kadar açıklayıcı olabildim
Neyse konuya devam edip ana modüle dönecek olursak hani başta yazdığım
For j=1 To kesit_sayisi Step 1
userform1.Show(1)
donati_sirasi_sayisi(j) = Sayfa2.Cells(2 + ((j - 1) * donati_sirasi_sayisi(j - 1)), 5).Value
Evet sorum burada geliyor donati_sirasi_sayisi adındaki dizinin 1. elemanında yani 1. kesitine gidiyor formülden de görüleceği üzere Cells(2,5) değerini atıyor. Diyelim ki Cells(2,5) e userform ile atanan değer 3 olsun o zaman ikinci veri girişi yapılacağı vakit userform Cells(2,5) diğer adıyla E2 hücresinde 3 değerini görünce gidip bu hücre ile aynı kolonda fakat 3 satır aşağısındaki hücreyi seçip yeni veri girişini buna yapacak di mi? Buraya yapılacak veri girişi de 2 olsun. Tamam buraya kadar ; peki yazdığımız formül; yeni veri girişinin yapıldığı bu hücreyi mi gösteriyor gerçekten ona bakalım. Cells(2+(2-1)*3,5).Value --> yani Cells(5,5).Value bu da tuttu yalnız bir sonraki için baktığımızda j=3 için formülde Cells(7,5) i elde etmeliyiz çünkü Cells(5,5) in içinde 2 değeri olduğu için 2 satır aşağısındaki hücreye veri girişi yapılacak. yani Cells(7,5).Value fakat gel gör ki formül bize Cells(2+(3-1)*2,5) yani Cells(6,5) i veriyor. Evet formül tutarsız bir formül bu formülü düzeltebilir miyiz ne önerirsiniz arkadaşlar.
Biraz uzun oldu ama yararlı da olacağı kanısındayım.
İlgilenecek arkadaşlara teşekkürler
For j=1 To kesit_sayisi Step 1
userform1.Show(1)
! Burada herbir yeni kesitin veri girişi için bir userform açılıyor j=1.kesit; j=2.kesit şeklinde gidiyor ve bu verileri excelin ilgili hücrelerine atama işlemi yapılıyor.
!Bu userform1 e ait ileri_command butonunun Tıklanmasıyla çalışan kod da şu şekilde;
Sub ileri_command1_Click()
Dim m As Integer
If Sayfa2.Range("E2") = "" Then
Sayfa2.Select
Sayfa2.Range("E2").Select
ActiveCell.Value = donati_sirasi_adedi_text.Value * 1
ActiveCell.Offset(0, -1) = paspayi_text.Value * 1
ActiveCell.Offset(0, 1) = donati_capi_text.Value * 1
ActiveCell.Offset(0, -2) = kesit_yuksekligi_text.Value * 1
ActiveCell.Offset(0, -3) = kesit_genisligi_text.Value * 1
Sayfa1.Select
Else
Sayfa2.Select
Sayfa2.Cells(1048576, 5).End(xlUp).Select
m = ActiveCell.Value
ActiveCell.Offset(m, 0).Select
ActiveCell.Value = donati_sirasi_adedi_text.Value * 1
ActiveCell.Offset(0, -1) = paspayi_text.Value * 1
ActiveCell.Offset(0, 1) = donati_capi_text.Value * 1
ActiveCell.Offset(0, -2) = kesit_yuksekligi_text.Value * 1
ActiveCell.Offset(0, -3) = kesit_genisligi_text.Value * 1
Sayfa1.Select
End If
userform1.Hide
End Sub
Butona tıklanmasıyla program Sayfa2' nin E2 hücresi boş ise userformun textboxlarından ''donati_sirasi_text'' adındaki metin kutusunun(textbox) değerini 1 ile çarpıyor ki, bu sayede değerin metin olmaktan çıkıp sayısal bir tipe girmesini sağlıyorum ve bu değerin seçili hale getirdiğim E2 hücresine atanmasını gerçekleştiriyorum.
Daha sonra hala aktif (seçili) durumdaki E2 hücresini (ActiveCell)'i ActiveCell.Offset(0,-1) ifadesiyle aktif hücrenin E2 hücresi ile aynı satırda ( 0 ile satırda oynama yapılmadığı ifade ediliyor) fakat -1 yazarak E2 hücresinin 1 sütun solunda ( - olması nedeniyle ) olan hücre olması sağlanıyor. Bu seçili hale gelen yeni aktif hücreye de ilgili userform 'un ''paspayı_text'' adındaki metin kutusunda bulunan değeri atanıyor.
Soruma gelmeden lütfen üstadlar beni bağışlasın sorumu sormadan benden daha az bilgide olanlara da yardımcı olmak ve yaptığım işlemi kısaltabileceğini düşündüğümüz arkadaşlarla da beyin fırtınası yapmak amacıyla biraz daha ayrıntılı yazmaya özen gösteriyorum elimden geldiğince; o yüzden sıkılmadığınızı umarak devam ediyorum.
Eğer E2 hücresi boş değilse E2'ye veri girişi yapılmışsa 2.veri girişi için 5. sütunun en son satırından yani 1048576.satırdan yukarıya doğru dolu gördüğün ilk hücreyi bul ve seç; seçmenle aktif hale gelen bu hücrenin değerini m değişkenine ata ve bu aktif hücrenin içindeki m değeri kadar aşağı satırına git ve bu yeni hücreyi aktif hale getir ve artık yeni veri girişini bu yeni hücreye ve bu yeni hücreyi referans alarak yapmaya başla şeklinde bir komut yazımı söz konusu.
Bilmiyorum ne kadar açıklayıcı olabildim
Neyse konuya devam edip ana modüle dönecek olursak hani başta yazdığım
For j=1 To kesit_sayisi Step 1
userform1.Show(1)
donati_sirasi_sayisi(j) = Sayfa2.Cells(2 + ((j - 1) * donati_sirasi_sayisi(j - 1)), 5).Value
Evet sorum burada geliyor donati_sirasi_sayisi adındaki dizinin 1. elemanında yani 1. kesitine gidiyor formülden de görüleceği üzere Cells(2,5) değerini atıyor. Diyelim ki Cells(2,5) e userform ile atanan değer 3 olsun o zaman ikinci veri girişi yapılacağı vakit userform Cells(2,5) diğer adıyla E2 hücresinde 3 değerini görünce gidip bu hücre ile aynı kolonda fakat 3 satır aşağısındaki hücreyi seçip yeni veri girişini buna yapacak di mi? Buraya yapılacak veri girişi de 2 olsun. Tamam buraya kadar ; peki yazdığımız formül; yeni veri girişinin yapıldığı bu hücreyi mi gösteriyor gerçekten ona bakalım. Cells(2+(2-1)*3,5).Value --> yani Cells(5,5).Value bu da tuttu yalnız bir sonraki için baktığımızda j=3 için formülde Cells(7,5) i elde etmeliyiz çünkü Cells(5,5) in içinde 2 değeri olduğu için 2 satır aşağısındaki hücreye veri girişi yapılacak. yani Cells(7,5).Value fakat gel gör ki formül bize Cells(2+(3-1)*2,5) yani Cells(6,5) i veriyor. Evet formül tutarsız bir formül bu formülü düzeltebilir miyiz ne önerirsiniz arkadaşlar.
Biraz uzun oldu ama yararlı da olacağı kanısındayım.
İlgilenecek arkadaşlara teşekkürler