Makroda veri girişi sorunu

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
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,549
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Bir örnek dosya daha açıklayıcı olurdu... Bu yazdıklarınızı baştan sonra yeniden yapmak gerekmezdi ve tam hata ne anlaşılırdı.
 
Katılım
25 Ocak 2009
Mesajlar
110
Excel Vers. ve Dili
Excel-2007 Türkçe
Zaten örnek dosyayı copy paste yaptım sadece aralara kodları yeni başlayanlar için yorum kattım. Yani illa dosya ekleyeceksem aynısını bulacaksın sadece yorumlarım olmayacak o zaman daha mı açıklayıcı olurdu?
 
Katılım
25 Ocak 2009
Mesajlar
110
Excel Vers. ve Dili
Excel-2007 Türkçe
Anlamadığın noktayı cems bir daha açıklayabilirim tam olarak nereye kadar geldin ve takıldın orayı bir daha açıklayayım.
 
Katılım
27 Temmuz 2004
Mesajlar
719
Excel Vers. ve Dili
Excel 2003 Tr
Bahsettiğin formülün içine, değerine bakıp o kadar satır aşağıya yazacak olduğu hücrenin değerini dahil etmemiz gerekir. Ya her defasında en alttaki hücrenin değerini o hücrenin satır sayısına ekleyip yeni veri girişi yapacağımız hücreyi bulacaz yada o sütunun toplamın alıp ilk çıkış noktamıza ekleyecez.
 
Katılım
27 Temmuz 2004
Mesajlar
719
Excel Vers. ve Dili
Excel 2003 Tr
Anladığım kadarıyla burada ayrı bir değişken kullanmak lazım.
döngünün içine şu satırları ekleyelim
Kod:
fark=fark+donati_sirasi_sayisi(j - 1)
donati_sirasi_sayisi(j) = Sayfa2.Cells(2 + fark, 5).Value
 
Katılım
25 Ocak 2009
Mesajlar
110
Excel Vers. ve Dili
Excel-2007 Türkçe
Evet janveljan bu işimi çözüyor sana çok teşekkür ederim dostum gecenin bu saatinde sorunuma çare buldun sağol.
 
Üst