Soru Bir combobutton ile iki ayrı sayfaya kaydetme

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Kod:
Private Sub Kaydet_Click()
Dim SonSatır
SonSatır = WorksheetFunction.CountA(Worksheets("VERİ").Range("A:A")) + 1
Cells(SonSatır, "A").Value = WorksheetFunction.Max(Range("A2:A" & Rows.Count)) + 1

Worksheets("VERİ").Cells(SonSatır, 2) = TextBox22.Text
Worksheets("VERİ").Cells(SonSatır, 3) = TextBox23.Text
Worksheets("VERİ").Cells(SonSatır, 4) = TextBox24.Text
Worksheets("VERİ").Cells(SonSatır, 5) = ComboBox15.Text
Worksheets("VERİ").Cells(SonSatır, 6) = ComboBox16.Text
Worksheets("VERİ").Cells(SonSatır, 7) = TextBox25.Text
Worksheets("VERİ").Cells(SonSatır, 8) = ComboBox17.Text
Worksheets("VERİ").Cells(SonSatır, 9) = TextBox26.Text
Worksheets("VERİ").Cells(SonSatır, 10) = TextBox27.Text
Worksheets("VERİ").Cells(SonSatır, 11) = ComboBox18.Text
Worksheets("VERİ").Cells(SonSatır, 12) = ComboBox19.Text
Worksheets("VERİ").Cells(SonSatır, 13) = ComboBox20.Text
Worksheets("VERİ").Cells(SonSatır, 14) = ComboBox21.Text

TextBox22.Text = ""
TextBox23.Text = ""
TextBox24.Text = ""
ComboBox15.Text = ""
ComboBox16.Text = ""
TextBox25.Text = ""
ComboBox17.Text = ""
TextBox26.Text = ""
TextBox26.Text = ""
TextBox27.Text = ""
ComboBox18.Text = ""
ComboBox19.Text = ""
ComboBox20.Text = ""
ComboBox21.Text = ""
MsgBox "Kayıt İşlemi Tamamlandı"
End Sub
Bu kodlarla VERİ sayfasina kaydediyorum. Ama ben aynı combobutton ile hem VERİ sayfasina Hem de ARŞİV sayfasına kaydetmek istiyorum ama şöyle bir sorun var veri sayfasında sıra numarasına bakınca 111 numarası Boş texbox21 de 111 yazıyor. Ama ARŞİV sayfasında 361 satır Boş yani her iki sayfada da Boş olan satırlar aynı değil. Userfirmunda ise veri sayfasından sıra numarasını çeken texbox21 var
Acaba userformda bir texbox daha oluşturup arşiv sayfasından mı çekse sıra numarasını. User formun inimstalize kismina iki ayrı sıra numarası saydırma kodunu bilmediğimden bunu da yapamadım. Yardımcı olacak biri varsa sevinirim.
Not. Her iki sayfada da aynı hücreler var sadece kayıt olacakları satır numaraları farklı.
 

Muzaffer Ali

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

Şöyle bir şey yapabilirsiniz.
TextBox 21 konusunu anlamadım ama.

Kod:
Private Sub Kaydet_Click()
    Dim SonSatır As Integer
    Dim Sayfa(1) As Worksheet
    Dim Sira As Integer
    
    Set Sayfa(0) = Worksheets("VERİ")
    Set Sayfa(1) = Worksheets("ARŞİV")
    For Sira = 0 To 1

        With Sayfa(Sira)
            SonSatır = WorksheetFunction.CountA(.Range("A:A")) + 1
            Cells(SonSatır, "A").Value = WorksheetFunction.Max(Range("A2:A" & Rows.Count)) + 1
            .Cells(SonSatır, 2) = TextBox22.Text
            .Cells(SonSatır, 3) = TextBox23.Text
            .Cells(SonSatır, 4) = TextBox24.Text
            .Cells(SonSatır, 5) = ComboBox15.Text
            .Cells(SonSatır, 6) = ComboBox16.Text
            .Cells(SonSatır, 7) = TextBox25.Text
            .Cells(SonSatır, 8) = ComboBox17.Text
            .Cells(SonSatır, 9) = TextBox26.Text
            .Cells(SonSatır, 10) = TextBox27.Text
            .Cells(SonSatır, 11) = ComboBox18.Text
            .Cells(SonSatır, 12) = ComboBox19.Text
            .Cells(SonSatır, 13) = ComboBox20.Text
            .Cells(SonSatır, 14) = ComboBox21.Text
        End With
    Next
    TextBox22.Text = ""
    TextBox23.Text = ""
    TextBox24.Text = ""
    ComboBox15.Text = ""
    ComboBox16.Text = ""
    TextBox25.Text = ""
    ComboBox17.Text = ""
    TextBox26.Text = ""
    TextBox26.Text = ""
    TextBox27.Text = ""
    ComboBox18.Text = ""
    ComboBox19.Text = ""
    ComboBox20.Text = ""
    ComboBox21.Text = ""
    
    MsgBox "Kayıt İşlemi Tamamlandı"

End Sub
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Merhaba.

Şöyle bir şey yapabilirsiniz.
TextBox 21 konusunu anlamadım ama.

Kod:
Private Sub Kaydet_Click()
    Dim SonSatır As Integer
    Dim Sayfa(1) As Worksheet
    Dim Sira As Integer
   
    Set Sayfa(0) = Worksheets("VERİ")
    Set Sayfa(1) = Worksheets("ARŞİV")
    For Sira = 0 To 1

        With Sayfa(Sira)
            SonSatır = WorksheetFunction.CountA(.Range("A:A")) + 1
            Cells(SonSatır, "A").Value = WorksheetFunction.Max(Range("A2:A" & Rows.Count)) + 1
            .Cells(SonSatır, 2) = TextBox22.Text
            .Cells(SonSatır, 3) = TextBox23.Text
            .Cells(SonSatır, 4) = TextBox24.Text
            .Cells(SonSatır, 5) = ComboBox15.Text
            .Cells(SonSatır, 6) = ComboBox16.Text
            .Cells(SonSatır, 7) = TextBox25.Text
            .Cells(SonSatır, 8) = ComboBox17.Text
            .Cells(SonSatır, 9) = TextBox26.Text
            .Cells(SonSatır, 10) = TextBox27.Text
            .Cells(SonSatır, 11) = ComboBox18.Text
            .Cells(SonSatır, 12) = ComboBox19.Text
            .Cells(SonSatır, 13) = ComboBox20.Text
            .Cells(SonSatır, 14) = ComboBox21.Text
        End With
    Next
    TextBox22.Text = ""
    TextBox23.Text = ""
    TextBox24.Text = ""
    ComboBox15.Text = ""
    ComboBox16.Text = ""
    TextBox25.Text = ""
    ComboBox17.Text = ""
    TextBox26.Text = ""
    TextBox26.Text = ""
    TextBox27.Text = ""
    ComboBox18.Text = ""
    ComboBox19.Text = ""
    ComboBox20.Text = ""
    ComboBox21.Text = ""
   
    MsgBox "Kayıt İşlemi Tamamlandı"

End Sub
Sayın @dalgalikur dediğiniz gibi aynı anda iki sayfaya kayıt yapıyor ama veri sayfasındaki sıra numaram 103 . arşiv sayfasındaki sıra no123 . siizn kodları kullanıca veri sayfasında 103 105 107 109 diye çift atıyor sıra no . arşiv sayfasında zaten bir sıra numarası vermiyor User Formumda sıra numarasını texbox21 ile formumun ininstalizr kısmına yazdığım aşağıdaki kodla sağlıyorum
Kod:
Private Sub UserForm_Initialize()
TextBox21.Text = WorksheetFunction.Max(Sheets("VERİ").Range("A1:A65536")) + 1
End Sub
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,743
Excel Vers. ve Dili
2021 Türkçe
Aşağıdaki gibi olacak o zaman.

Kod:
Private Sub Kaydet_Click()
    Dim SonSatır As Integer
    Dim Sayfa(1) As Worksheet
    Dim Sira As Integer
   
    Set Sayfa(0) = Worksheets("VERİ")
    Set Sayfa(1) = Worksheets("ARŞİV")
    For Sira = 0 To 1

        With Sayfa(Sira)
            SonSatır = WorksheetFunction.CountA(.Range("A:A")) + 1
            TextBox21.Text = SonSatır
            Cells(SonSatır, "A").Value = WorksheetFunction.Max(Range("A2:A" & Rows.Count)) + 1
            .Cells(SonSatır, 2) = TextBox22.Text
            .Cells(SonSatır, 3) = TextBox23.Text
            .Cells(SonSatır, 4) = TextBox24.Text
            .Cells(SonSatır, 5) = ComboBox15.Text
            .Cells(SonSatır, 6) = ComboBox16.Text
            .Cells(SonSatır, 7) = TextBox25.Text
            .Cells(SonSatır, 8) = ComboBox17.Text
            .Cells(SonSatır, 9) = TextBox26.Text
            .Cells(SonSatır, 10) = TextBox27.Text
            .Cells(SonSatır, 11) = ComboBox18.Text
            .Cells(SonSatır, 12) = ComboBox19.Text
            .Cells(SonSatır, 13) = ComboBox20.Text
            .Cells(SonSatır, 14) = ComboBox21.Text
        End With
    Next
    TextBox22.Text = ""
    TextBox23.Text = ""
    TextBox24.Text = ""
    ComboBox15.Text = ""
    ComboBox16.Text = ""
    TextBox25.Text = ""
    ComboBox17.Text = ""
    TextBox26.Text = ""
    TextBox26.Text = ""
    TextBox27.Text = ""
    ComboBox18.Text = ""
    ComboBox19.Text = ""
    ComboBox20.Text = ""
    ComboBox21.Text = ""
   
    MsgBox "Kayıt İşlemi Tamamlandı"

End Sub
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Aşağıdaki gibi olacak o zaman.

Kod:
Private Sub Kaydet_Click()
    Dim SonSatır As Integer
    Dim Sayfa(1) As Worksheet
    Dim Sira As Integer
  
    Set Sayfa(0) = Worksheets("VERİ")
    Set Sayfa(1) = Worksheets("ARŞİV")
    For Sira = 0 To 1

        With Sayfa(Sira)
            SonSatır = WorksheetFunction.CountA(.Range("A:A")) + 1
            TextBox21.Text = SonSatır
            Cells(SonSatır, "A").Value = WorksheetFunction.Max(Range("A2:A" & Rows.Count)) + 1
            .Cells(SonSatır, 2) = TextBox22.Text
            .Cells(SonSatır, 3) = TextBox23.Text
            .Cells(SonSatır, 4) = TextBox24.Text
            .Cells(SonSatır, 5) = ComboBox15.Text
            .Cells(SonSatır, 6) = ComboBox16.Text
            .Cells(SonSatır, 7) = TextBox25.Text
            .Cells(SonSatır, 8) = ComboBox17.Text
            .Cells(SonSatır, 9) = TextBox26.Text
            .Cells(SonSatır, 10) = TextBox27.Text
            .Cells(SonSatır, 11) = ComboBox18.Text
            .Cells(SonSatır, 12) = ComboBox19.Text
            .Cells(SonSatır, 13) = ComboBox20.Text
            .Cells(SonSatır, 14) = ComboBox21.Text
        End With
    Next
    TextBox22.Text = ""
    TextBox23.Text = ""
    TextBox24.Text = ""
    ComboBox15.Text = ""
    ComboBox16.Text = ""
    TextBox25.Text = ""
    ComboBox17.Text = ""
    TextBox26.Text = ""
    TextBox26.Text = ""
    TextBox27.Text = ""
    ComboBox18.Text = ""
    ComboBox19.Text = ""
    ComboBox20.Text = ""
    ComboBox21.Text = ""
  
    MsgBox "Kayıt İşlemi Tamamlandı"

End Sub
Aşağıdaki gibi olacak o zaman.

Kod:
Private Sub Kaydet_Click()
    Dim SonSatır As Integer
    Dim Sayfa(1) As Worksheet
    Dim Sira As Integer
  
    Set Sayfa(0) = Worksheets("VERİ")
    Set Sayfa(1) = Worksheets("ARŞİV")
    For Sira = 0 To 1

        With Sayfa(Sira)
            SonSatır = WorksheetFunction.CountA(.Range("A:A")) + 1
            TextBox21.Text = SonSatır
            Cells(SonSatır, "A").Value = WorksheetFunction.Max(Range("A2:A" & Rows.Count)) + 1
            .Cells(SonSatır, 2) = TextBox22.Text
            .Cells(SonSatır, 3) = TextBox23.Text
            .Cells(SonSatır, 4) = TextBox24.Text
            .Cells(SonSatır, 5) = ComboBox15.Text
            .Cells(SonSatır, 6) = ComboBox16.Text
            .Cells(SonSatır, 7) = TextBox25.Text
            .Cells(SonSatır, 8) = ComboBox17.Text
            .Cells(SonSatır, 9) = TextBox26.Text
            .Cells(SonSatır, 10) = TextBox27.Text
            .Cells(SonSatır, 11) = ComboBox18.Text
            .Cells(SonSatır, 12) = ComboBox19.Text
            .Cells(SonSatır, 13) = ComboBox20.Text
            .Cells(SonSatır, 14) = ComboBox21.Text
        End With
    Next
    TextBox22.Text = ""
    TextBox23.Text = ""
    TextBox24.Text = ""
    ComboBox15.Text = ""
    ComboBox16.Text = ""
    TextBox25.Text = ""
    ComboBox17.Text = ""
    TextBox26.Text = ""
    TextBox26.Text = ""
    TextBox27.Text = ""
    ComboBox18.Text = ""
    ComboBox19.Text = ""
    ComboBox20.Text = ""
    ComboBox21.Text = ""
  
    MsgBox "Kayıt İşlemi Tamamlandı"

End Sub
Sayın @dalgalikur aynı hata devam ediyor bu sefer de sıra numarasını kafasına göre arşiv sayfasından kafasına göre veri sayfasından alıyor. Ama değişmeyen şey hala veri sayfasında sıra numarasını çift atlayarak veriyor Misal son numaraya göre 103-105-107 veya 104-106-108 şeklinde
 

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Sayın @dalgalikur dosyanın bir örneğini ekledim Kaydet diyince tek tuşla Arşiv ve Veri sayfasında aynı hücrelere kayıt edecek ama Arşiv sayfasında dosya satır sayısı ile veri sayfasındaki satır sayısı aynı değil. Bu durum da dosya kaydında ciddi sorun oluyor
Benim dosyamın adı "PBS"
size yardımcı olması açısından "sayfalara giriş" diye bir dosya gönderiyorum. En kötü bu dosyadaki gibi yapabilir miyiz. Ama Eğer Sayfalara giriş örneğini uyuglayacak iseniz combobox ın içeriğini PBS excelinde KONTROL diye bir sayfan benim yazacağım sayfa isimleri PBS excelde varsa combboxta o sayfa isimleri görünsün ve oraya kaydetmesi mümkün mü
 

Ekli dosyalar

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,743
Excel Vers. ve Dili
2021 Türkçe
Dosyanız ekte.

Bir tavsiye:
Kontrol isimlerini örneğin TextBox1 gibi olduğu gibi bırakırsanız kodları okumak zorlaşıyor. Kontrol isimlerini anlamlı bir şekilde değiştirmeniz çok önemli. Mesela Adı soyadı yazılacak bir TextBox'un adını txtAdiSoyadi olarak değiştirirseniz "txt" kontrolün bir metin kutusu olduğunu ve "AdiSoyadi" Metin kutusunun ne amaç ile kullanıldığını bildirir. Bir başka örnek ComboBox22 değil de cbRutbesi olarak değiştirebilirsiniz. "cb" ComboBox 'u ifade ediyor "Rutbesi" kullanım amacını temsil ediyor.

Bunu yaparsanız siz de kodlarınızı daha kolay okursunuz.

Kolay gelsin.
 

Ekli dosyalar

TURKOLOG

Altın Üye
Katılım
13 Kasım 2008
Mesajlar
744
Excel Vers. ve Dili
2016 64 TR
Altın Üyelik Bitiş Tarihi
29-10-2026
Sayın @dalgalikur çok teşekkür ederim elinize emeğinize sağlık dosyayı inceleme imkanım yok su anda ama size dönüş yapacağım tekrar . Böyle bir kullanım olduğunu bilmiyordum. Bundan sonra tavsiyenize uyacağım.
 
Üst