Soru Başka Sayfa makro ile veri çekme

Katılım
3 Temmuz 2011
Mesajlar
44
Excel Vers. ve Dili
2016
Aynı sayfada kod'u çalıştırınca veriler otomatik açılır list de geliyor ama başka sayfa da buton yapıp çalıştırdığımda list de veriler gelmiyor neden acep?

Kodun tamamı:

Kod:
Private Sub ComboBox1_Change()

TextBox1 = Empty: TextBox2 = Empty: TextBox3 = Empty: TextBox4 = Empty

Label5.Visible = False

End Sub



Private Sub CommandButton1_Click()

If TextBox1.Text <> Empty And TextBox2.Text <> Empty And TextBox4.Text <> Empty And _

        ComboBox1.Text <> Empty Then

TextBox3 = Sayfa6.Range("a65536").End(3).Value + 1

Else

    MsgBox "Eksik bilgi girilmiş", vbExclamation, "Ticaret "

    CommandButton2_Click

        Exit Sub

End If

With Sayfa6

For Each bul In Sayfa6.Range("b2:b" & Sayfa6.Range("b65536").End(3).Row)

    If bul = ComboBox1 Then

    Label5.Visible = True

        Exit Sub

    End If

Next bul

For Each bul In Sayfa6.Range("b2:b" & Sayfa6.Range("b65536").End(3).Row)

    If bul = ComboBox1 Then

        bul.Offset(i, -1).Activate

        bul.Offset(i, 1) = TextBox1

        bul.Offset(i, 2) = TextBox2

        bul.Offset(i, -1) = TextBox3

        bul.Offset(i, 3) = TextBox4

        UserForm_Initialize

        Exit For

    Else

        Sayfa6.Range("a65536").End(3).Offset(1, 0) = Sayfa6.Range("a65536").End(3) + 1

        Sayfa6.Range("a65536").End(3).Offset(0, 1) = ComboBox1

        Sayfa6.Range("a65536").End(3).Offset(0, 2) = TextBox1

        Sayfa6.Range("a65536").End(3).Offset(0, 3) = TextBox2

        Sayfa6.Range("a65536").End(3).Offset(0, 4) = TextBox4

        UserForm_Initialize

        Exit For

    End If

Next bul

End With

End Sub



Private Sub CommandButton2_Click()

Dim bul As Range

For Each bul In Sayfa6.Range("b2:b" & Sayfa6.Range("b65536").End(3).Row)

    If bul = ComboBox1 Then

        bul.Offset(i, -1).Activate

        TextBox1 = bul.Offset(i, 1)

        TextBox2 = bul.Offset(i, 2)

        TextBox3 = bul.Offset(i, -1)

        TextBox4 = bul.Offset(i, 3)

    Else

        TextBox3 = Sayfa6.Range("a65536").End(3).Value + 1

    End If

Next bul

End Sub



Private Sub CommandButton3_Click()

Unload Me

End Sub



Private Sub UserForm_Initialize()

Dim i As Byte

ComboBox1.Clear

For i = 2 To [a65536].End(3).Row

ComboBox1.AddItem Cells(i, 2)

Next i

End Sub
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
Sorularınızı örnek belge üzerinden sorarsanız (cevabımın altındaki İMZA bölümünü okuyunuz) daha hızlı sonuca ulaşabilirsiniz.

Ayrıca yazılacak mesajlarda kod/formül vereceğiniz zaman bu kod/formülü,
aşağıdaki ekran görüntüsünde işaretlediğim kısmı kullanarak eklerseniz, daha kullanışlı/anlaşılır olduğunu belirtmeliyim.
1550585088521.png
 
Katılım
3 Temmuz 2011
Mesajlar
44
Excel Vers. ve Dili
2016
Merhaba
Öncelikle belgemde özel bilgiler yer almaktadır ondan dolayı paylaşamıyorum. Aynı zamanda altın üyeliğim yok maalesef
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Hızlı sonuca ulaşabilmeniz için, belgenizi mevcut haliyle farklı kaydettikten sonra (çok büyük veri yığını içermesi gerekmez elbette);
-- özel bilgileri silebilir,
-- bu bilgiler, yapılacak işlem için gerekliyse bunların yerine anlamlı/tutarlı/gerçek verileri temsil edebilecek nitelikte farklı veriler yazabilirsiniz.

ALTIN ÜYE olmama durumu için de belge ekleme konusunda gerekli açıklama cevabımın altındaki İMZA öbülümünde var.
Sanırım tam olarak okumamışsınız.
.
 
Katılım
3 Temmuz 2011
Mesajlar
44
Excel Vers. ve Dili
2016
Kurumsal bir firmadan internete girdiğimden çoğu sitelere girişimiz engelli. Bu nedenle eklemekte sıkıntı çıkıyor. Yarın tekrardan bilgi işlemden izin isteyip dosyayı eklemeye çalışayım. Vermiş olduğum kod ile yapılabilecek birşey varsa memnun olurum. Teşekkürler.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Çözüme ulaştırma konusunda ben veya başka bir forum üyesi sorunuzu cevapsız bırakmayacaktır.

Görev yaptığınız firmanın bu konudaki tercihlerini bilemiyoruz ancak
Google.drive veya yandex.disc için bir engel olduğunu sanmıyorum, bir deneyin isterseniz (yalnız belgeye erişim izni vermeniz lazım).
.
 
Katılım
3 Temmuz 2011
Mesajlar
44
Excel Vers. ve Dili
2016
Çalışma dosyası

Dosyayı özel izinler sayesinde sonunda ekleyebildim :)

* Şimdi excel i açtığımda makro otomatik açılıyor onun açılmaması için ne yapmalıyım?
* Değiştir ve Alana aktar butonlarım çalışmıyor kod bulamadım onlara
* İlk alanda açılır buton da normalde veri sayfasındaki verileri görebiliyordum başka sayfaya taşıyınca onlarda kayboldu

Not: Kaydet deyince Veri sayfasına kayıt yapıyor Bul deyince bulmuyor aslında aynı sayfada olunca yapıyor buluyor ama başka sayfada çalıştırınca makroyu veriler kayboluyor. Verileri alana aktar deyince bütün alanlar dolu ise sayfa1 deki alanlara gelmesini yapmaya çalıştım. Olmayınca karıştı. İlginiz ve alakanız için teşekkür ederim.
 
Katılım
20 Şubat 2019
Mesajlar
1
Excel Vers. ve Dili
2013 türkçe
İyi günler Bende benzer bir işlem için yardım rica edicektim. Operasyondaki pclerin listesi var zimmet ve hangi birime ait olduğu. Şunu yapmaya çalışıyorum. Ana sayfa var pc seri numrası adları filan ve operasyon bilgileri yer alıyor. Ben projeye göre yeni sayflarda ana listedki pclerin çekilmesini istiyorum. Mesela ana sayfada f sütununda operasyonlar yazıor. Ben gelip x operasyonu için f sütünuna bilgi girdiğimde 2. sayfada x operasyonu için yeni bir satır yada var olan satırın güncellenemsini istiyorum. Yada y operasyonunda bir kullanıcıya pc tanımladım fsütünuna y olrak bilgiyi girince 3. sayfada bu bilgilerin otomatik çekilmesi için yardımcı olurmusunuz.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Tekrar merhaba.
KAYDET, DEĞİŞTİR gibi işlem kodlarını incelemedim.
Öğrenmenize de katkısı olması bakımından adım adım gitmeyi öneriyorum.

Takıldığınız noktada yine mesaj yazarsınız.

İlk olarak UserForm'un Initalize (açılış) kodlarıyla başlayalım.
Kodlarda işlem yapılacak hücreler belli bir sayfadaki hücreler ise ve aktif sayfa hangisi olursa olsun hatasız işlem yapılabilmesi için;
kodlarda, hücrelerin sayfa adlarını da belirtmelisiniz, sayfa adı belirtilmezse aktif sayfa hangisiyse o sayfada işlem yapılır.
Benim tercihim A65536, B65536 yerine -- excel versiyonuna göre son satır numarası farklı olduğuna göre -- Cells(Rows.Count, "A") gibi kullanmaktır.
Rich (BB code):
Private Sub UserForm_Initialize()
Dim i As Byte
ComboBox1.Clear
For i = 2 To Sheets("veri").Cells(Rows.Count, "B").End(3).Row
ComboBox1.AddItem Sheets("veri").Cells(i, 2)
Next i
End Sub
 
Katılım
3 Temmuz 2011
Mesajlar
44
Excel Vers. ve Dili
2016
Tekrar merhaba.
KAYDET, DEĞİŞTİR gibi işlem kodlarını incelemedim.
Öğrenmenize de katkısı olması bakımından adım adım gitmeyi öneriyorum.

Takıldığınız noktada yine mesaj yazarsınız.

İlk olarak UserForm'un Initalize (açılış) kodlarıyla başlayalım.
Kodlarda işlem yapılacak hücreler belli bir sayfadaki hücreler ise ve aktif sayfa hangisi olursa olsun hatasız işlem yapılabilmesi için;
kodlarda, hücrelerin sayfa adlarını da belirtmelisiniz, sayfa adı belirtilmezse aktif sayfa hangisiyse o sayfada işlem yapılır.
Benim tercihim A65536, B65536 yerine -- excel versiyonuna göre son satır numarası farklı olduğuna göre -- Cells(Rows.Count, "A") gibi kullanmaktır.
Rich (BB code):
Private Sub UserForm_Initialize()
Dim i As Byte
ComboBox1.Clear
For i = 2 To Sheets("veri").Cells(Rows.Count, "B").End(3).Row
ComboBox1.AddItem Sheets("veri").Cells(i, 2)
Next i
End Sub


Tekrar dan merhaba

Kendimce birşeyler yapmaya çalışıyorum sizlerden destek almaya webden destek almaya çalışıyorum örneklerden karşılaştırma yapmaya çalışıyorum ama bazı yerlerde takılıyorum. Mesela sayfa adları belirtin demişsiniz. O işlemi bir türlü yapamadım. Örnek vereceğim kod un neresine eklemeliyim?


Kod:
Private Sub CommandButton2_Click()
Dim BUL As Range
For Each BUL In Sayfa6.Range("b2:b" & Range("b65536").End(3).Row)
    If BUL = ComboBox1 Then
        TextBox1 = BUL.Offset(i, 1)
        TextBox2 = BUL.Offset(i, 2)
        TextBox3 = BUL.Offset(i, -1)
        TextBox4 = BUL.Offset(i, 3)
    Else
        TextBox3 = Sayfa6.Cells(Rows.Count, "A").End(3).Value + 1
    End If
Next BUL
End Sub
2. kod



Kod:
Private Sub CommandButton1_Click()
If TextBox1.Text <> Empty And TextBox2.Text <> Empty And TextBox4.Text <> Empty And _
        ComboBox1.Text <> Empty Then
TextBox3 = Sayfa6.Range("a65536").End(3).Value + 1
Else
    MsgBox "Eksik bilgi girilmiş", vbExclamation, "Ticaret "
    CommandButton2_Click
        Exit Sub
End If
With Sayfa6
For Each BUL In Sayfa6.Range("b2:b" & Range("b65536").End(3).Row)
    If BUL = ComboBox1 Then
    Label5.Visible = True
        Exit Sub
    End If
Next BUL
For Each BUL In .Range("b2:b" & Range("b65536").End(3).Row)
    If BUL = ComboBox1 Then
        BUL.Offset(i, -1).Activate
        BUL.Offset(i, 1) = TextBox1
        BUL.Offset(i, 2) = TextBox2
        BUL.Offset(i, -1) = TextBox3
        BUL.Offset(i, 3) = TextBox4
        UserForm_Initialize
        Exit For
    Else
        .Range("a65536").End(3).Offset(1, 0) = .Range("a65536").End(3) + 1
        .Range("a65536").End(3).Offset(0, 1) = ComboBox1
        .Range("a65536").End(3).Offset(0, 2) = TextBox1
        .Range("a65536").End(3).Offset(0, 3) = TextBox2
        .Range("a65536").End(3).Offset(0, 4) = TextBox4
        UserForm_Initialize
        Exit For
    End If
Next BUL
End With
End Sub


Sanırım sayfa adları olmadığı için hatalar alıyorum. Veriler ya gelmiyor ya kaydetmiyor yada başka sorunlar çıkıyor.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Açılışta kodların çalışmaması için ThisWorbook sayfasındaki kodu silin.

Diğer işlemler için Userformdaki kodları silip aşağıdaki kodları aynı alana yapıştırın.

Kod:
Dim Sv As Worksheet, S1 As Worksheet, sira As Long
Private Sub ComboBox1_Change()
    TextBox1 = epmpty: TextBox2 = Empty: TextBox3 = Empty: TextBox4 = Empty
    Label5.Visible = False
    sira = ComboBox1.ListIndex + 2
    CommandButton2_Click 'bu kodu buraya eklerseniz bul butonuna gerek kalmaz
End Sub

Private Sub CommandButton1_Click() 'kaydet
    Dim son As Long
    son = Sv.Cells(Rows.Count, "A").End(xlUp).Row + 1
    Sv.Cells(son, "A") = son - 1
    Sv.Cells(son, "B") = ComboBox1  'adı
    Sv.Cells(son, "C") = TextBox1   'mail
    Sv.Cells(son, "D") = TextBox2   'telefon
    Sv.Cells(son, "E") = TextBox4   'adres
    UserForm_Initialize
End Sub

Private Sub CommandButton4_Click() 'değiştir
    Sv.Cells(sira, "C") = TextBox1   'mail
    Sv.Cells(sira, "D") = TextBox2   'telefon
    Sv.Cells(sira, "E") = TextBox4   'adres
    Sayfada_Goster
End Sub

Private Sub CommandButton2_Click() 'bul
    TextBox1 = Sv.Cells(sira, "C") 'mail
    TextBox2 = Sv.Cells(sira, "D") 'telefon
    TextBox4 = Sv.Cells(sira, "E") 'adres
    Sayfada_Goster
End Sub

Private Sub CommandButton3_Click() 'kapanış
    Unload Me
End Sub

Private Sub UserForm_Initialize() 'açılış
    Dim i As Byte
    Set Sv = Sheets("veri")
    Set S1 = Sheets("Sayfa1")
    ComboBox1.Clear
    For i = 2 To Sv.Cells(Rows.Count, "A").End(xlUp).Row
        ComboBox1.AddItem Sv.Cells(i, "B")
    Next i
    Sayfada_Goster
End Sub
Private Sub Sayfada_Goster()
    S1.Range("C1") = ComboBox1
    S1.Range("C2") = TextBox1
    S1.Range("C3") = TextBox2
    S1.Range("C4") = TextBox4
End Sub
 
Katılım
3 Temmuz 2011
Mesajlar
44
Excel Vers. ve Dili
2016
Sayın Ömer bey ilginiz ve yardım için teşekkür ederim. Deneyip mutlaka cevap vereceğim.
 
Katılım
3 Temmuz 2011
Mesajlar
44
Excel Vers. ve Dili
2016
Merhaba,

Açılışta kodların çalışmaması için ThisWorbook sayfasındaki kodu silin.

Diğer işlemler için Userformdaki kodları silip aşağıdaki kodları aynı alana yapıştırın.

Kod:
Dim Sv As Worksheet, S1 As Worksheet, sira As Long
Private Sub ComboBox1_Change()
    TextBox1 = epmpty: TextBox2 = Empty: TextBox3 = Empty: TextBox4 = Empty
    Label5.Visible = False
    sira = ComboBox1.ListIndex + 2
    CommandButton2_Click 'bu kodu buraya eklerseniz bul butonuna gerek kalmaz
End Sub

Private Sub CommandButton1_Click() 'kaydet
    Dim son As Long
    son = Sv.Cells(Rows.Count, "A").End(xlUp).Row + 1
    Sv.Cells(son, "A") = son - 1
    Sv.Cells(son, "B") = ComboBox1  'adı
    Sv.Cells(son, "C") = TextBox1   'mail
    Sv.Cells(son, "D") = TextBox2   'telefon
    Sv.Cells(son, "E") = TextBox4   'adres
    UserForm_Initialize
End Sub

Private Sub CommandButton4_Click() 'değiştir
    Sv.Cells(sira, "C") = TextBox1   'mail
    Sv.Cells(sira, "D") = TextBox2   'telefon
    Sv.Cells(sira, "E") = TextBox4   'adres
    Sayfada_Goster
End Sub

Private Sub CommandButton2_Click() 'bul
    TextBox1 = Sv.Cells(sira, "C") 'mail
    TextBox2 = Sv.Cells(sira, "D") 'telefon
    TextBox4 = Sv.Cells(sira, "E") 'adres
    Sayfada_Goster
End Sub

Private Sub CommandButton3_Click() 'kapanış
    Unload Me
End Sub

Private Sub UserForm_Initialize() 'açılış
    Dim i As Byte
    Set Sv = Sheets("veri")
    Set S1 = Sheets("Sayfa1")
    ComboBox1.Clear
    For i = 2 To Sv.Cells(Rows.Count, "A").End(xlUp).Row
        ComboBox1.AddItem Sv.Cells(i, "B")
    Next i
    Sayfada_Goster
End Sub
Private Sub Sayfada_Goster()
    S1.Range("C1") = ComboBox1
    S1.Range("C2") = TextBox1
    S1.Range("C3") = TextBox2
    S1.Range("C4") = TextBox4
End Sub

Ömer bey merhaba

Değerli vaktinizi ayırarak yarım kalan makroma göstermiş olduğunuz destek için tekrardan teşekkür ederim. Vaktinizi çok almadan kısa 1 sorum olacak. Makroda sil butonum mevcut ona ilişkin kod bulamadım önceden aşağıdaki kod'u kullanıyordum yeni versiyona göre tasarlayamadım malesef.

SİLME KODU;
Kod:
Private Sub CommandButton4_Click()
Dim bul As Range
For Each bul In Sayfa1.Range("b2:b" & Range("b65536").End(3).Row)
    If bul.Value = ComboBox1.Value Then
        bul.Select
        Selection.EntireRow.Delete
        For i = 2 To Range("a65536").End(3).Row
            Cells(i, 1).Value = i - 1
        Next i
    End If
Next bul
End Sub
 
Son düzenleme:

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,196
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
CommandButton4 kodunu yukarıda vermiştim. Örneğinizde sil değil değiştir olarak kullanılıyordu.

Eğer değiştirmek değilde silme olacaksa aşağıdaki gibi kullanılabilir.
Kod:
Private Sub CommandButton4_Click()
    Sv.Rows(sira).Delete Shift:=xlUp
    UserForm_Initialize
End Sub
 
Katılım
3 Temmuz 2011
Mesajlar
44
Excel Vers. ve Dili
2016
Çok teşekkür ederim. Allah razı olsun.
 
Üst