Sipariş Listesi Hazırlama

Katılım
23 Temmuz 2008
Mesajlar
79
Excel Vers. ve Dili
türkçe 2003
Altın Üyelik Bitiş Tarihi
20.12.2022
Arkadaşlar maksadım excel vba ya yeni merak saldığımdan bu konuda kendimi geliştirmektir.
Bu düşünce ile işyerinde de kullanabilmek için basit bir dosya oluşturmaya çalıştım.

Ama tabi acemiliğimden elime yüzüme bulaştırdım. Sizlerde bu konuda yardım ederseniz sevinirim.

Yapmaya çalıştığım basit bir sipariş listesi. Bir kaç deneme makrosu içinde var ama tamamen yeniden başlanabilirde. Dosyayı açınca daha kolay anlayacaksınız arkadaşlar şimdiden her şey için teşekkürler.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Öncelikle foruma hoşgeldiniz.

Lütfen mesaj başlığınızı, mesajınızın içeriğini ifade edecek şekilde belirleyiniz.

"Şöyle bir şey yaptım" diyerek attığınız mesaj, çoğu kişi için anlam ifade etmeyecek ve ilgi çekmeyecektir.

Yeni üye olduğunuz için, şu an, konu başlığınızı ben değiştirdim. Bundan sonraki mesajlarınızda, lütfen dikkat ediniz.
 
Katılım
23 Temmuz 2008
Mesajlar
79
Excel Vers. ve Dili
türkçe 2003
Altın Üyelik Bitiş Tarihi
20.12.2022
Ferhat bey nazik uyarınız için teşekkür ederim. Dediğinizde çok haklısınız, ama ilk defa böyle bir forum sitesine üye olduğum ve ilk konum olduğu için kusurlarımı bağışlayın. Yazı yazmak (kendimi ifade etmek) konusunda pek başarılı olduğum söylenemez.
 
Katılım
23 Temmuz 2008
Mesajlar
79
Excel Vers. ve Dili
türkçe 2003
Altın Üyelik Bitiş Tarihi
20.12.2022
Peki deneyimlerinden bizlerinde faydalanmasını sağlayacak hiç kimse yokmu. Bu konuda yardım edecek uzmanlarımızı bekliyoruz.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
"Ana Sayfa" sheetine bir adet CommandButton yerleştirin ve Click olay kodunu aşağıdaki gibi belirleyin.

Kod:
Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim sStr As Integer
    
    For i = 6 To Cells(65536, 1).End(xlUp).Row
        
        If Not IsEmpty(Cells(i, 1)) Then
            
            With Sheets("Data")
                sStr = .Cells(65536, 5).End(xlUp).Row + 1
                .Cells(sStr, 2) = Cells(1, 2)
                .Cells(sStr, 3) = Cells(2, 2)
                .Cells(sStr, 4) = Cells(3, 2)
                .Cells(sStr, 5) = Cells(i, 1)
                .Cells(sStr, 6) = Cells(i, 2)
                .Cells(sStr, 7) = Cells(i, 3)
                .Cells(sStr, 8) = Cells(i, 4)
            End With
        
        End If
    
    Next i
    
    MsgBox "Veriler aktarıldı", vbInformation, "Bilgilendirme"
End Sub
 
Katılım
23 Temmuz 2008
Mesajlar
79
Excel Vers. ve Dili
türkçe 2003
Altın Üyelik Bitiş Tarihi
20.12.2022
Ferhat bey ilginize teşekkürler. Ellerinize ve aklınıza sağlık.
Yalnız bu müşteriye ait bilgileri geri nasıl çağırabiliriz, aynı şekilde acaba
Yani a kişisinin tüm bilgilerini tekrar ana sayfaya alabilme gibi imkanımız olabilirmi?
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
"Ana Sayfa" sheetine bir adet daha CommandButton ilave edin ve aşağıdaki kodları kullanın.

Kod:
Private Sub CommandButton2_Click()
    Dim bul As Range
    Dim adr As String
    Dim sstr As Integer
 
    If Not IsEmpty(Cells(1, 2)) And Not IsEmpty(Cells(2, 2)) Then
 
        With UsedRange
            Range("A6:C" & 6 + .Cells.Count).ClearContents
        End With
 
        With Sheets("Data")
            Set bul = .Columns(2).Find(Cells(1, 2), lookat:=xlWhole)
 
            If Not bul Is Nothing Then
                adr = bul.Address
 
                Do
                    If bul.Offset(0, 1) = Cells(2, 2) Then
                        sstr = Cells(65536, 1).End(xlUp).Row + 1
                        Cells(sstr, 1) = .Cells(bul.Row, 5)
                        Cells(sstr, 2) = .Cells(bul.Row, 6)
                        Cells(sstr, 3) = .Cells(bul.Row, 7)
                    End If
                    Set bul = .Columns(2).FindNext(bul)
                Loop While Not bul Is Nothing And adr <> bul.Address
 
            Else
 
                MsgBox "Aranan kriterlerde, bir veri bulunamadı", vbCritical, "UYARI"
                GoTo FPC
 
            End If
 
        End With
 
    Else
 
        MsgBox "Ad veya Soyad'dan en az biri boş ..." & vbLf & vbLf & _
               "Lütfen değer giriniz", vbCritical, "UYARI"
 
    End If
FPC:
 
    Set bul = Nothing
End Sub
 
Katılım
23 Temmuz 2008
Mesajlar
79
Excel Vers. ve Dili
türkçe 2003
Altın Üyelik Bitiş Tarihi
20.12.2022
Ferhat bey tekrar tekrar teşekkür ederim.
Gerçekten benim için çok ii bi bilgilendirme oldu ve hatta bunu daha da geliştirip
işyerimde de kullanacağıma emin olabilirsiniz.

Ancak size ufak bi soru daha mümkünse kodları daha ii anlamak için

String
Integer
UsedRange
lookat:=xlWhole
Nothing

anlamlarını nerden bulabilirim veya siz kısaca yazabilirmisiniz.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Bu terimler (ve daha fazlası için) birazcık kitap kurcalamanız gerekebilir.

Ben kısaca, buradakileri izah edeyim.

String ve Integer kelimeleri, VBA (veya VB)'de değişken tiplerine karşılık gelir. String değişken tipi; bir dizeyi ifade eder ve metin (text) karakterlidir. Bizim örneğimizide kullandığım adr adlı değişken, bir hücrenin (range) adres bilgisini yüklendiğinden ($A$1 gibi), string bir karaktere sahiptir. Integer değişken tipi, kapasite olarak; -32.768 ile 32.767 arasındaki herhangi bir tamsayı olabilir. Kodumuzda da, sStr değişkeni satır numarasını temsil ettiğinden, ben integer kullanmayı uygun gördüm. Ama; Long olarak da tanımlanabilirdi.

UsedRange, adında anlaşılacağı gibi, sayfa üzerindeki Kullanım Alanını veya Kullanılan Alanı (Aralığı) ifade eder. UsedRange; kapasite olarak 256 sütun ve 65.536 satırlık bir Excel sheetinin, ne kadarının kullanıldığını bize gösterir.

Lookat:=xlWhole, Find fonksiyonunun bir çok parametresinden biridir. Find komutunun içine bunu yazarak, arana kelimenin birebir (Tümünün-Whole) eşleştiği hücre(ler)in bulunmasını istemekteyiz. Find komutunun diğer parametrelerini de inceleyiniz.

Nothing ise, hiçbirşeydir ... Object bir değişkeni set ettiğinizde, bellekte bir yer kaplar. Bu değişken, işimiz olduğu müddetçe bellekten işlem yürütür. Ama işimiz bittiğinde bellekte bu değişken için ayrılan bölümü yoketmeliyiz. Bir objeyi, Nothing'e set etmek demek, onu yoketmek demektir.
 
Üst