• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Excel Form da inputlarımı kaydırıyor ve bir üste ekliyor.

Katılım
23 Ağustos 2022
Mesajlar
40
Excel Vers. ve Dili
Excel 360 TR
Merhabalar, ekte paylaştığım excelde Home sayfasındaki "maaliyet hesapla" ya basınca çıkan tabloya girilen verileri hep 2. satıra ve bir sonra girilecek veriler için de bir önce girileni 3. satıra atıp 2. satıra yeni verileri giren bir yazılım hazırlamaya çalıştım ama sıkıntılar yaşıyorum. Burada yardımcı olanlar çok bilgili bence direkt denesiniz anlarsınız sorunu. Yardımcı olabilirseniz çok sevinirim.
 

Ekli dosyalar

Çözüm için:

iRow = [Counta(Database!A:A)] - 1

kısmındaki -1'i silerek deneyin.

DATABASE sayfasında 35. satırdaki başlıklar gerekli mi? Gerekli değilse o satırı silip aşağıdaki gibi de kullanabilirsiniz:

iRow = [Counta(Database!A:A)] + 1
 
Çözüm için:

iRow = [Counta(Database!A:A)] - 1

kısmındaki -1'i silerek deneyin.

DATABASE sayfasında 35. satırdaki başlıklar gerekli mi? Gerekli değilse o satırı silip aşağıdaki gibi de kullanabilirsiniz:

iRow = [Counta(Database!A:A)] + 1
35. satırı silip kodu şu şekilde güncelledim ama hep bir alta yapıyor ve sayılarda bir kayma var, özellikle "lazer kesim" için girilen inputta. Mesela yeni inputları girdik, var olan satırları bir aşağı kaydırıp, yeni dataları 2. satıra eklemesi lazım
 
bir alt satıra kaydırma isteğinize dikkat etmemişim, kusura bakmayın :(

Submit kodlarını aşağıdakilerle değiştirip deneyin:

PHP:
Sub Submit()
    Dim sh As Worksheet
    Dim iRow As Long
    Set sh = ThisWorkbook.Sheets("Database")
    iRow = [Counta(Database!A:A)] + 1
    sh.Range("A2:J" & iRow).Copy sh.[A3]
    With sh
        .Cells(2, 1) = iRow - 1
        .Cells(2, 2) = frmForm.txtlazer.Value
        .Cells(2, 3) = frmForm.txtDamla.Value
        .Cells(2, 4) = frmForm.txtAlm.Value
        .Cells(2, 5) = frmForm.txta.Value
        .Cells(2, 6) = frmForm.txtb.Value
        .Cells(2, 7) = frmForm.txtH.Value
        .Cells(2, 8) = frmForm.txtL.Value
        .Cells(2, 9) = frmForm.txtdis.Value
        .Cells(2, 10) = frmForm.txtic.Value
    End With
End Sub
 
bir alt satıra kaydırma isteğinize dikkat etmemişim, kusura bakmayın :(

Submit kodlarını aşağıdakilerle değiştirip deneyin:

PHP:
Sub Submit()
    Dim sh As Worksheet
    Dim iRow As Long
    Set sh = ThisWorkbook.Sheets("Database")
    iRow = [Counta(Database!A:A)] + 1
    sh.Range("A2:J" & iRow).Copy sh.[A3]
    With sh
        .Cells(2, 1) = iRow - 1
        .Cells(2, 2) = frmForm.txtlazer.Value
        .Cells(2, 3) = frmForm.txtDamla.Value
        .Cells(2, 4) = frmForm.txtAlm.Value
        .Cells(2, 5) = frmForm.txta.Value
        .Cells(2, 6) = frmForm.txtb.Value
        .Cells(2, 7) = frmForm.txtH.Value
        .Cells(2, 8) = frmForm.txtL.Value
        .Cells(2, 9) = frmForm.txtdis.Value
        .Cells(2, 10) = frmForm.txtic.Value
    End With
End Sub
Efendim ne kusuru sizi ben uğraştırıyorum asıl siz kusura bakmayın yoruyorum sizi o kadar.

Ama şöyle bir durum var, ben Lazer kesim'e ne verirsem vereyim sadece 1 artıyor. 1-2-3-4 diye gidiyor yeni data ekledikçe. Ve girilen inputlarda bir kayma var, sebebini çözemedim açıkçası
 
Sorunuzu anlamadım maalesef. Son verdiğim kod işinizi görmüyor mu? Görmüyorsa nesi yanlış?
 
işe yarıyor ama şöyle diyim, butona basınca, inputunu girdiğim her şey 1 basamak kayıyor. Mesela "a" kutusuna 5 yazdım, bunu "b" kutusuna yazıyor. Sebebi sanırsam
.Cells(2, 1) = iRow - 1
kodu yüzünden. Onu silip,
.Cells(2, 1) = frmForm.txtlazer.Value
diye başlattığımda lazeri görseldeki gibi yapıyor ve gene sağa doğru kayıyor yazdıklarım238984
 
Ben tabi hangi veriy nereye kaydediliyor diye bakmamıştım. Bu hatanın sebebi (hata denilmez gerçi) sizin

.Cells(2, 1) = iRow - 1

satırıyla tabloya sıra numarası verdirmeniz. Bu satır tablonun ilk sütununa sıra numarası veriyor ve sonraki verileri de sonraki sütunlara aktarıyor doğal olarak.

Aşağıdaki gibi deneyin:

PHP:
Sub Submit()
    Dim sh As Worksheet
    Dim iRow As Long
    Set sh = ThisWorkbook.Sheets("Database")
    iRow = [Counta(Database!A:A)] + 1
    sh.Range("A2:J" & iRow).Copy sh.[A3]
    With sh
        .Cells(2, 1) = frmForm.txtlazer.Value
        .Cells(2, 2) = frmForm.txtDamla.Value
        .Cells(2, 3) = frmForm.txtAlm.Value
        .Cells(2, 4) = frmForm.txta.Value
        .Cells(2, 5) = frmForm.txtb.Value
        .Cells(2, 6) = frmForm.txtH.Value
        .Cells(2, 7) = frmForm.txtBe.Value
        .Cells(2, 8) = frmForm.txtL.Value
        .Cells(2, 9) = frmForm.txtdis.Value
        .Cells(2, 10) = frmForm.txtic.Value
    End With
End Sub
 
Bu kodu kopyala yapıştır yapınca aynı şekilde devam ediyor. Ben zaten o satır numarası çıksın istemiyorum aslında, hatta
.Cells(2, 1) = iRow - 1
kısmını silince de LAZER kısmı gene 1-2-3... diye artıyor. Ve Lazer Kesim e 5 verirsem mesela, LAZER kısmı 1 oluyor ve Damla Tutucu 5 oluyor. Hatta bu işlemden sonra ALMG3'e "45" yazıp save dersek, LAZER 2 oluyor ve ALGM3 değil de "a"artıyor.
 
Ve de yeni girilen veriyi yeni satıra ekliyor. Ben eski veriyi alt satıra kaydırıp, yeni girilen veriyi 2. satıra yazdırmasına çalışıyorum
 
Kod aşağıdaki gibiyken, input ve output görsellerdeki gibidir bu arada. Bir çok şeyi denedim ama başaramadım :(
238995
238994


Kod:
Sub Submit()
    Dim sh As Worksheet
    Dim iRow As Long
    Set sh = ThisWorkbook.Sheets("Database")
    iRow = [Counta(Database!A:A)] + 1
    sh.Range("A2:J" & iRow).Copy sh.[A3]
    With sh
       ' .Cells(2, 1) = iRow - 1
        .Cells(2, 1) = frmForm.txtlazer.Value
        .Cells(2, 2) = frmForm.txtDamla.Value
        .Cells(2, 3) = frmForm.txtAlm.Value
        .Cells(2, 4) = frmForm.txta.Value
        .Cells(2, 5) = frmForm.txtb.Value
        .Cells(2, 6) = frmForm.txtH.Value
        .Cells(2, 7) = frmForm.txtBe.Value
        .Cells(2, 8) = frmForm.txtL.Value
        .Cells(2, 9) = frmForm.txtdis.Value
        .Cells(2, 10) = frmForm.txtic.Value
    End With
End Sub
 
Sizde neden ve nasıl oluyor bilmiyorum ama ben kodu #10 nolu mesajımdaki gibi kullandığımda aşağıdaki gibi sonuç elde ediyorum.

Ekran görüntüsünde 1 nolu bölümdeki gibi textboxlara veri girip Save düğmesine basıyorum ve listboxta 2 nolu görüntü ve sayfada da 3 nolu görüntü oluşyuor:

239000
 
Acaba benim excelde bir sorun mu var, çünkü sizin kodu koyuyorum, hem bir alta atıyor, hem yazdıklarım kayıyor hem de B yi doldurmuyor sadece B ye input verdiğimde. Üstüne hala lazer kısmını 1-2-3-4-5 diye götürüyor. Sizi çok yordum ama gerçekten sorunun ne olduğunu algılayamadım. Acaba ayardan mı başka bir şeyden mi cidden olmadı.
 

Ekli dosyalar

Farkında mısınız bilmiyorum ama paylaştığınız dosyada benim #10 nolu mesajımdaki kodlar yok. Eski haliyle duruyor.

239011



Benim kodlarım ise şöyle:

239012
 
Yanlış yere bakıyormuşum ben yusuf bey :( module kısmındaki kodu değiştirip duruyormuşum, doğru yeri değiştirdim oldu. Çok teşekkür ederim yardımınız için.
 
Böyle karışıklıklara yol açmamak için userformda çalışacak kodlarınızı modüle değil de userforma yazmanızı tavsiye ederim. Benim aklıma hiç modüle bakmak gelmediği için modülde Submit kodu olduğunu yeni fark ettim mesela.

Bu arada initialize kodunda Reset makrosunu çalıştırıyorsunuz. O kodlar da listboxun sütun genişliklerini ayarlıyor ama ben her açtığımda bu kısım hata verdiği için önce o satırı iptal edip formu açıyorum, bilginiz olsun.

Sütun genişliğini doğrudan listboxun özellik kısmından ayarlamanız iyi olur:

239014
 
Ben de internetten bir guide buldum onu takip ediyordum bu formu hazırlarken, adam oraya yazdığı için ben de oraya yazdım.

anlatmak istediklerinizi de anladım, tekrardan çok teşekkür ederim Yusuf bey, iyi günler kolay gelsin. :)
 
Geri
Üst