Soru Örnek bir kod

sirkülasyon

Altın Üye
Katılım
10 Temmuz 2012
Mesajlar
2,532
Excel Vers. ve Dili
2021 LTSC TR
Altın Üyelik Bitiş Tarihi
18-06-2026
Userform1 de ki Combobox1 değeri "İLK" ise Sadece Kayıt sayfasına kaydedecek.
Eğer Combobox1 değeri "İLK" değil ise Hem Kayıt sayfasına hem de Gelen sayfasına kayıt yapacak.
Rica etsem bu işlemi sağlayacak Kaydet kodu için yardımcı olabilir misiniz?
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,071
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Deneyiniz:

PHP:
If Userform1.Combobox1.Value = "İLK" Then
    Sheets("Kayıt").[A1] = "Malatya"
Else
    Sheets("Kayıt").[A1] = "Malatya"
    Sheets("Gelen").[A1] = "Malatya"
End If
 

sirkülasyon

Altın Üye
Katılım
10 Temmuz 2012
Mesajlar
2,532
Excel Vers. ve Dili
2021 LTSC TR
Altın Üyelik Bitiş Tarihi
18-06-2026
Yusuf Abi Deneyip döneceğim.
Teşekkür ederim örnek için
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,491
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Aktarma işlemleri birden fazla kodlarla olacaksa, bunu tek işlemde yapmakta yarar var.
Alternatif olsun.

Kod:
Private Sub CommandButton1_Click()

    Dim Shf As Worksheet
    Dim i   As Integer
    Dim j   As Integer
    
    If ComboBox1.Value = "İLK" Then
        j = 1
    Else
        j = 2
    End If
    
    For i = 1 To j
        If i = 1 Then
            Set Shf = Sheets("Kayıt")
        Else
            Set Shf = Sheets("Gelen")
        End If
        
        'sayfaya kayıt kodları buraya yazılacak
        'örneğin syf.cells(1,"A") gibi
    
        MsgBox Shf.Name
        Set Shf = Nothing
        
     Next i
     
End Sub
 
Son düzenleme:

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,071
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Merhaba,

Aktarma işlemleri birden fazla kodlarla olacaksa, bunu tek işlemde yapmakta yarar var.
Alternatif olsun.

Kod:
Private Sub CommandButton1_Click()

    Dim Shf As Worksheet
    Dim i   As Integer
    Dim j   As Integer
  
    If ComboBox1.Value = "İlk" Then
        j = 1
    Else
        j = 2
    End If
  
    For i = 1 To j
        If j = 1 Then
            Set Shf = Sheets("Kayıt")
        Else
            Set Shf = Sheets("Gelen")
        End If
      
        'sayfaya kayıt kodları buraya yazılacak
        'örneğin shf.cells(1,"A") gibi
  
End Sub
Affınıza sığınarak, if j = 1 yerine if i = 1 olması gerekmez mi? Sizin verdiğiniz kodda her zaman aynı sayfaya kayıt yapmaz mı?
 

sirkülasyon

Altın Üye
Katılım
10 Temmuz 2012
Mesajlar
2,532
Excel Vers. ve Dili
2021 LTSC TR
Altın Üyelik Bitiş Tarihi
18-06-2026
Kod:
Dim Shf As Worksheet

    Dim i   As Integer

    Dim j   As Integer

      If ComboBox1.Value = "İlk" Then

        j = 1

    Else

        j = 2

    End If

      For i = 1 To j

        If j = 1 Then

            Set Shf = Sheets("Kayıt")

        Else

            Set Shf = Sheets("Yeni Gelen")

        End If

'sayfaya kayıt kodları buraya yazılacak

'----------Kayıt Sayfası

Son_Dolu_Satir = Sheets("Kayıt").Range("b65536").End(xlUp).Row

Bos_Satir = Son_Dolu_Satir + 1

Sheets("Kayıt").Range(1, "A" & Bos_Satir).Value = Application.WorksheetFunction.Max(Sheets("Kayıt").Range("A:A")) + 1

Sheets("Kayıt").Range(1, "B" & Bos_Satir).Value = TextBox2.Value

Sheets("Kayıt").Range(1, "C" & Bos_Satir).Value = TextBox1.Value

'---------------Yeni Gelen Sayfası

Son_Dolu_Satir = Sheets("Yeni Gelen").Range("b65536").End(xlUp).Row
Bos_Satir = Son_Dolu_Satir + 1
Sheets("Yeni Gelen").Range("A" & Bos_Satir).Value = Application.WorksheetFunction.Max(Sheets("Yeni Gelen").Range("A:A")) + 1
Sheets("Yeni Gelen").Range( "B" & Bos_Satir).Value = TextBox2.Value
Sheets("Yeni Gelen").Range("C" & Bos_Satir).Value = TextBox1.Value
Sheets("Yeni Gelen").Range("D" & Bos_Satir).Value = TextBox3.Value
Kod hata verdi. Yapamadım Üstad
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,491
Excel Vers. ve Dili
Ofis 365 Türkçe
Affınıza sığınarak, if j = 1 yerine if i = 1 olması gerekmez mi? Sizin verdiğiniz kodda her zaman aynı sayfaya kayıt yapmaz mı?
Tabi ki sizin dediğiniz gibi olacak YUSUF44 , hatamı düzelttim :)
Denemeden gönderirseniz böyle ufak tefek ama ölümcül hatalar olabiliyor maalesef
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,491
Excel Vers. ve Dili
Ofis 365 Türkçe
Kod:
Dim Shf As Worksheet

    Dim i   As Integer

    Dim j   As Integer

      If ComboBox1.Value = "İlk" Then

        j = 1

    Else

        j = 2

    End If

      For i = 1 To j

        If j = 1 Then

            Set Shf = Sheets("Kayıt")

        Else

            Set Shf = Sheets("Yeni Gelen")

        End If

'sayfaya kayıt kodları buraya yazılacak

'----------Kayıt Sayfası

Son_Dolu_Satir = Sheets("Kayıt").Range("b65536").End(xlUp).Row

Bos_Satir = Son_Dolu_Satir + 1

Sheets("Kayıt").Range(1, "A" & Bos_Satir).Value = Application.WorksheetFunction.Max(Sheets("Kayıt").Range("A:A")) + 1

Sheets("Kayıt").Range(1, "B" & Bos_Satir).Value = TextBox2.Value

Sheets("Kayıt").Range(1, "C" & Bos_Satir).Value = TextBox1.Value

'---------------Yeni Gelen Sayfası

Son_Dolu_Satir = Sheets("Yeni Gelen").Range("b65536").End(xlUp).Row
Bos_Satir = Son_Dolu_Satir + 1
Sheets("Yeni Gelen").Range("A" & Bos_Satir).Value = Application.WorksheetFunction.Max(Sheets("Yeni Gelen").Range("A:A")) + 1
Sheets("Yeni Gelen").Range( "B" & Bos_Satir).Value = TextBox2.Value
Sheets("Yeni Gelen").Range("C" & Bos_Satir).Value = TextBox1.Value
Sheets("Yeni Gelen").Range("D" & Bos_Satir).Value = TextBox3.Value
Kod hata verdi. Yapamadım Üstad
Verdiğim kodu yeniden düzenledim, Sayın YUSUF44'ün uyarısı doğru idi, kodları yeniden alın.
Ayrıca ben o kodları yazarken iki ayrı aktarma yapmayın diye döngü şeklinde verdim.

Siz bütün aktarmaları tek bir aktarmada ama sayfa ismi yerine shf.range(....) gibi kullaının.
 

sirkülasyon

Altın Üye
Katılım
10 Temmuz 2012
Mesajlar
2,532
Excel Vers. ve Dili
2021 LTSC TR
Altın Üyelik Bitiş Tarihi
18-06-2026
Yusuf ve Necdet Abilerime
Yardımlarını esirgemedikleri için teşekkür ederim.
Ellerinize sağlık.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,491
Excel Vers. ve Dili
Ofis 365 Türkçe
Yusuf ve Necdet Abilerime
Yardımlarını esirgemedikleri için teşekkür ederim.
Ellerinize sağlık.
kodların son durumunu merak ettim, bir garip aktarma yapıyordunuz, onları nasıl yazdığınızı görmek isterim doğrusu
 

sirkülasyon

Altın Üye
Katılım
10 Temmuz 2012
Mesajlar
2,532
Excel Vers. ve Dili
2021 LTSC TR
Altın Üyelik Bitiş Tarihi
18-06-2026
Necdet Abi
Kod:
Private Sub EKLE_Click()
If ComboBox1.Value = "" Then: MsgBox "..................!!!", vbExclamation, "UYARI": ComboBox1.SetFocus: Exit Sub
If TextBox1.Value = "" Then: MsgBox "........................!!!", vbExclamation, "UYARI": TextBox1.SetFocus: Exit Sub
'------------------
  Dim Shf As Worksheet

    Dim i   As Integer
    Dim j   As Integer
      If ComboBox1.Value = "İlk" Then
        j = 1
    Else
        j = 2
    End If
      For i = 1 To j
        If j = 1 Then
            Set Shf = Sheets("Kayıt")
        Else
            Set Shf = Sheets("Yeni Gelen")
        End If
'-----------------
Sheets("Kayıt").Select
Son_Dolu_Satir = Shf.Range("b65536").End(xlUp).Row
Bos_Satir = Son_Dolu_Satir + 1
Shf.Range(1, "A" & Bos_Satir).Value = Application.WorksheetFunction.Max(Sheets("Kayıt").Range("A:A")) + 1
Shf.Range(1, "B" & Bos_Satir).Value = TextBox2.Value
Shf.Range(1, "C" & Bos_Satir).Value = TextBox1.Value
'--------------------------
Sheets("Yeni Gelen").Select
Son_Dolu_Satir = Sheets("Yeni Gelen").Range("b65536").End(xlUp).Row
Bos_Satir = Son_Dolu_Satir + 1
Shf.Range("A" & Bos_Satir).Value = Application.WorksheetFunction.Max(Sheets("Yeni Gelen").Range("A:A")) + 1
Shf.Range("B" & Bos_Satir).Value = TextBox2.Value
'----------------
 Next
End Sub
'---------------------




sürekli Application.WorksheetFunction. olan satırda hata verip duruyor.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,491
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Aşağıdaki gibi deneyin ama sayfalarda mutlaka başlık olsun.

Shf.Range("A" & Bos_Satir).Value = Application.WorksheetFunction.Max(Sheets("Kayıt").Range("A:A")) + 1

Satırını ne amaçla kullanıyorsunuz. Sıra numarası vermek istiyorsanız tek bir değişkenle işi halledebilirsiniz. İki ayrı değişkene gerek yok.
Onu da şöyle yapabilirsiniz.
Son_Satir = Shf.Cells(Rows.Count, "B").End(3).Row+1
Bu yazılacak ilk boş satırı belirler.
A sütununa ise (satır numarası yazdıracaksanız ve başlık satırı 1. satırda ise:)
Shf.Range("A" & Son_Satir).Value = Son_Satir -1


Kod:
Private Sub CommandButton1_Click()

    Dim Shf As Worksheet
    Dim i   As Integer
    Dim j   As Integer
     
    If ComboBox1.Value = "" Then: MsgBox "..................!!!", vbExclamation, "UYARI": ComboBox1.SetFocus: Exit Sub
    If TextBox1.Value = "" Then: MsgBox "..................!!!", vbExclamation, "UYARI": TextBox1.SetFocus: Exit Sub
'------------------

    If ComboBox1.Value = "İLK" Then
        j = 1
    Else
        j = 2
    End If
   
    For i = 1 To j
        If j = 1 Then
            Set Shf = Sheets("Kayıt")
        Else
            Set Shf = Sheets("Yeni Gelen")
        End If
       
        '----------------- SAYFALARA KAYIT YAPILIR ---------------------

        Son_Dolu_Satir = Shf.Cells(Rows.Count, "B").End(3).Row
        Bos_Satir = Son_Dolu_Satir + 1
        Shf.Range("A" & Bos_Satir).Value = Application.WorksheetFunction.Max(Sheets("Kayıt").Range("A:A")) + 1
        Shf.Range("B" & Bos_Satir).Value = TextBox2.Value
        Shf.Range("C" & Bos_Satir).Value = TextBox1.Value
        '----------------- SAYFA KAYIT SONU ------------------------------
       
    Next i

    Unload Me
   
End Sub
 
Üst