Veri Tabanı hk.

Katılım
14 Kasım 2017
Mesajlar
618
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
07-01-2024
Arkadaşlar yapmak istediklerimi şöyle sıralayım yardım ederseniz çok sevinirim.
1. Sayfa1 de kaydet butonuna her basıldığında F7:N7 hücre aralığını Veri tabanı sayfasına alt alta kaydetmesini istiyorum.
2. Sayfa1 de L11 deki veri listesinde hangi plaka seçiliyse o plakaya ait kaydedilmiş verileri sayfa1 deki gri alana yazdırmak istiyorum. Örnek dosya ekledim. Şimdiden teşekkür ediyorum.
 

Ekli dosyalar

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,806
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Aşağıdaki kodları kullanabilirsin.
Butonları sağ tıklatıp "Makro Ata"seçip makroları butonlara atayabilirsin.

Kod:
Sub Kaydet()
    Dim syf As Worksheet
    Dim syfVeriT As Worksheet
    Dim Say As Long
    Set syf = ThisWorkbook.Worksheets("Sayfa1")
    Set syfVeriT = ThisWorkbook.Worksheets("Veri tabanı")
    Say = syfVeriT.Cells(Rows.Count, "A").End(3).Row + 1
    syf.Range("E7:N7").Copy
    syfVeriT.Range("A" & Say).PasteSpecial Paste:=xlPasteValues
    syf.Range("E7:N7").ClearContents
End Sub

Sub Goster()
    Dim syf As Worksheet
    Dim syfVeriT As Worksheet
    Dim Say As Long
    Set syf = ThisWorkbook.Worksheets("Sayfa1")
    Set syfVeriT = ThisWorkbook.Worksheets("Veri tabanı")
    Say = syfVeriT.Cells(Rows.Count, "A").End(3).Row + 1

    syfVeriT.Range("A2:J" & Say).AutoFilter Field:=1, Criteria1:=syf.Range("L11").Value
    syfVeriT.Range("A2:J" & Say).Copy
    syf.Range("E13").PasteSpecial Paste:=xlPasteValues
End Sub
 
Katılım
14 Kasım 2017
Mesajlar
618
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
07-01-2024
Hocam çok teşekkür ederim tam istediğim gibi çalışıyor. Öğrenmek istediğim bir kaç tanım var. Dim, Set, Say,
End(3) bunlar neyi ifade ediyor ? Makroya nasıl bir komut veriyor ? Bunları öğrenmek istiyorum. Birde şu satırın açıklamasını yapabilirsen makro kodlamayı öğrenmede bir adım daha atmış olacağım. Çok teşekkür ederim.
syfVeriT.Cells(Rows.Count, "A").End(3).Row + 1
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,806
Excel Vers. ve Dili
2019 Türkçe
Sub Kaydet() 'Prosedür başlığı. Diğer bir deyişle Kod başlığı, Makro başlığı, Harf ile başlamak zorunda.
Dim syf As Worksheet 'dim değimi bir değişken tanımlandığını gösterir. "syf" değişkenimizin adıdır. harf ile başlaması gerekir. "As" dir eki gibi düşünebilirsiniz. Worksheet değişkenin bir excel sayfası olduğu anlamına gelir.
'Dim syf As Worksheet bunu kısaca tercüme etmek gerekirse; Adı syf olan bir excel sayfası değişkeni tanımlıyorum.
'Neden sayfa değişkeni tanımlıyorum? Çünkü kodlar çalıştığında eğer dosya ismi ve sayfa belirtilmeden sadece hücre adresi yazılırsa aktif olan dosya ve sayfanın hücresine başvurur.
'Örnek: range("A1").text="test" bu kod çalıştığında aktif olan dosyanın aktif olan sayfası hangisi ise oraya "test" yazar.
ThisWorkbook.Worksheets("Sayfa1").range("A1").text="test" şeklinde yazarsak bu kod belirtilen dosyanın belirtilen sayfasının belirtilen hücresine "test" yazar.
Böylelikle hatalı yere yazmamış oluruz.
Burada ThisWorkbook.Worksheets("Sayfa1") yerine neden değişken kullanıyorum çünkü:
ThisWorkbook.Worksheets("Sayfa1") çok fazla yer kaplıyor
syf benim verdiğim değişken ismi çok kısa.

Dim syfVeriT As Worksheet
Dim Say As Long
Set syf = ThisWorkbook.Worksheets("Sayfa1")
' Burada değişkene bir değer atanıyor. "Set" değişkenin bir obje olduğunu belirtir
'Dikkat edersen "Say" değişkenine değer atarken "Set" değimini kullanmadım çünkü Say değişkeni "Long" dur yani sayıdır. Obje değildir.

Set syfVeriT = ThisWorkbook.Worksheets("Veri tabanı")
Say = syfVeriT.Cells(Rows.Count, "A").End(3).Row + 1 'Burada Rows satırlar demek. Rows.Count bir sayfada bulunan satır sayısı kadar demek. Bunun yerine eğer 10 yazarsam ilk 10 satıra bakılır. "A" a sütununu temsil ediyor.
Yani Cells(Rows.Count, "A") A sütununun sonuna kadar bak demek.
Cells(10, "A") yazsaydım A sütununun 10. satırına kadar bak demiş olurdum. Ama bu işimi görmüyor ben sonuna kadar baksın istedim.
End son demek
(3) Nereye doğru son sorusunun cevabını burada veriyoruz. 3 aşağıya doğru son demek.
Row, satır demek
End(3).Row, aşağıya doğru en son dolu hücrenin satır numarası demek.
syfVeriT.Cells(Rows.Count, "A").End(3).Row 'belirtilen dosyanın belirtilen sayfasının belirtilen kolonunun en son dolu hücresinin satır numarasını verdiğine göre sonuna + 1 yazarsam ilk boş hücreyi bulmuş olurum.
syf.Range("E7:N7").Copy' belirtilen alanı kopyalıyoruz.
syfVeriT.Range("A" & Say).PasteSpecial Paste:=xlPasteValues ' Buradaki PasteSpecial Özel yapıştır diyorum, xlPasteValues Özel yapıştırma yöntemim sadece verileri yapıştırıyorum. Çünkü kopyaladığım hücrelerdeki renk biçimlerinin kopyalanmasını istemiyorum
syf.Range("E7:N7").ClearContents, burada ile ClearContents belirttiğim alanı sil diyorum. Ancak sadece hücre içeriğini temizliyorum. Hücre silmiyorum eğer hücreleri silmek isteseydim sadece clear yazmalıydım.
End Sub'Prosedür, makro, kodlar son buldu
 
Son düzenleme:
Katılım
14 Kasım 2017
Mesajlar
618
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
07-01-2024
Vay be. Gerçekten eline emeğine sağlık ustam. Çok güzel anlatmışsınız.

LG-H815 cihazımdan Tapatalk kullanılarak gönderildi
 
Son düzenleme:

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,806
Excel Vers. ve Dili
2019 Türkçe
Faydalı olduysa ne mutlu. Kolay gelsin.
 
Üst