• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

ListBox taki verileri aktarma ve seçip silme

yuemse

Altın Üye
Katılım
28 Eylül 2010
Mesajlar
75
Excel Vers. ve Dili
2016 excel türkçe
Şimdiden yardımlarınız için Teşekkürler.

Yapmak istediğim
1- TEKLİFGEÇMİŞİ userformunda ki ListBox1 e çift tıkladığımda MALİYETHESABI userformunda ki TextBox1,2,3,4,5,6,7,8,9 ve ComboBox1 e veri aktarmak
2- TEKLİFGEÇMİŞİ userformunda ki ListBox1 tek tıklayıp SİL butonuna bastığımda o verinin silinmesi

ListBox1 > TEKLİFLER sayfasında ki verileri çekiyor.
TEKLİFLER sayfasındaki
A > MALİYETHESABI.TextBox9
B > MALİYETHESABI.TextBox1
C > MALİYETHESABI.TextBox2
D > MALİYETHESABI.TextBox3
E > MALİYETHESABI.TextBox4
F > MALİYETHESABI.TextBox5
H > MALİYETHESABI.TextBox7
J > MALİYETHESABI.TextBox6
S > MALİYETHESABI.TextBox8
I > MALİYETHESABI.ComboBox1 e gelecek şekilde verileri çekmek istiyorum.

Bir kaç yol denedim ama firma ismi aynı olduğu için beceremedim. Örnek dosya ektedir.
 

Ekli dosyalar

Merhaba.

Tümü sizin belgeniz için geçerli değil ama öncelikle birkaç hususa değinmem lazım.

Forumda destek talep ettiğiniz örnek belgelerin;
-- gerek belge açılışında ve gerekse de sayfa korumasında şifre içermeyen,
-- Ms.Excel'i gizleyen, Araç Çubuklarını gizleyen, Ms.Excel'i tam ekran modunda görüntülenmesini sağlayan kodlar içermemesine
özen göstermeniz yerinde olur.
Durum böyle olunca genellikle destek almanız zorlacaktır.

Sorunuza gelince TEKLİFGEÇMİŞİ formundaki;
-- SİL düğmesi için aşağıdaki ilk kod'u,
-- ListBox1'e ait çift tıklama kodunu ise aşağıdakiyle değiştiriniz.
.
Kod:
[B][COLOR="blue"]Private Sub SİL_Click()[/COLOR][/B]
Set t = Sheets("TEKLİFLER")
sat = ListBox1.ListIndex + 2
t.Range(t.Cells(sat, "A"), t.Cells(sat, "W")).Delete Shift:=xlUp
If t.Cells(Rows.Count, "A").End(3).Row > 1 Then
    For satt = 2 To t.Cells(Rows.Count, "A").End(3).Row
        t.Cells(satt, "A") = satt - 1
    Next
End If
[B][COLOR="Blue"]End Sub[/COLOR][/B]

[B][COLOR="blue"]Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)[/COLOR][/B]

Set t = Sheets("TEKLİFLER")
sat = ListBox1.ListIndex + 2
If sat = 1 Then
    MALİYETHESABI.Show
    MALİYETHESABI.TextBox9 = "": MALİYETHESABI.TextBox1 = ""
    MALİYETHESABI.TextBox2 = "": MALİYETHESABI.TextBox3 = ""
    MALİYETHESABI.TextBox4 = "": MALİYETHESABI.TextBox5 = ""
    MALİYETHESABI.TextBox7 = "": MALİYETHESABI.ComboBox1 = ""
    MALİYETHESABI.TextBox6 = "": MALİYETHESABI.TextBox8 = ""
    TEKLİFGEÇMİŞİ.Show
Else
    MALİYETHESABI.Show
    MALİYETHESABI.TextBox9 = t.Cells(sat, "A"): MALİYETHESABI.TextBox1 = t.Cells(sat, "B")
    MALİYETHESABI.TextBox2 = t.Cells(sat, "C"): MALİYETHESABI.TextBox3 = t.Cells(sat, "D")
    MALİYETHESABI.TextBox4 = t.Cells(sat, "E"): MALİYETHESABI.TextBox5 = t.Cells(sat, "F")
    MALİYETHESABI.TextBox7 = t.Cells(sat, "H"): MALİYETHESABI.ComboBox1 = t.Cells(sat, "I")
    MALİYETHESABI.TextBox6 = t.Cells(sat, "J"): MALİYETHESABI.TextBox8 = t.Cells(sat, "S")
    TEKLİFGEÇMİŞİ.Show
[B][COLOR="Red"]End If[/COLOR][/B]

[B][COLOR="blue"]End Sub[/COLOR][/B]
 
Merhaba.

Tümü sizin belgeniz için geçerli değil ama öncelikle birkaç hususa değinmem lazım.

Forumda destek talep ettiğiniz örnek belgelerin;
-- gerek belge açılışında ve gerekse de sayfa korumasında şifre içermeyen,
-- Ms.Excel'i gizleyen, Araç Çubuklarını gizleyen, Ms.Excel'i tam ekran modunda görüntülenmesini sağlayan kodlar içermemesine
özen göstermeniz yerinde olur.
Durum böyle olunca genellikle destek almanız zorlacaktır.

Sorunuza gelince TEKLİFGEÇMİŞİ formundaki;
-- SİL düğmesi için aşağıdaki ilk kod'u,
-- ListBox1'e ait çift tıklama kodunu ise aşağıdakiyle değiştiriniz.
.
Kod:
[B][COLOR="blue"]Private Sub SİL_Click()[/COLOR][/B]
Set t = Sheets("TEKLİFLER")
sat = ListBox1.ListIndex + 2
t.Range(t.Cells(sat, "A"), t.Cells(sat, "W")).Delete Shift:=xlUp
If t.Cells(Rows.Count, "A").End(3).Row > 1 Then
    For satt = 2 To t.Cells(Rows.Count, "A").End(3).Row
        t.Cells(satt, "A") = satt - 1
    Next
End If
[B][COLOR="Blue"]End Sub[/COLOR][/B]

[B][COLOR="blue"]Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)[/COLOR][/B]

Set t = Sheets("TEKLİFLER")
sat = ListBox1.ListIndex + 2
If sat = 1 Then
    MALİYETHESABI.Show
    MALİYETHESABI.TextBox9 = "": MALİYETHESABI.TextBox1 = ""
    MALİYETHESABI.TextBox2 = "": MALİYETHESABI.TextBox3 = ""
    MALİYETHESABI.TextBox4 = "": MALİYETHESABI.TextBox5 = ""
    MALİYETHESABI.TextBox7 = "": MALİYETHESABI.ComboBox1 = ""
    MALİYETHESABI.TextBox6 = "": MALİYETHESABI.TextBox8 = ""
    TEKLİFGEÇMİŞİ.Show
Else
    MALİYETHESABI.Show
    MALİYETHESABI.TextBox9 = t.Cells(sat, "A"): MALİYETHESABI.TextBox1 = t.Cells(sat, "B")
    MALİYETHESABI.TextBox2 = t.Cells(sat, "C"): MALİYETHESABI.TextBox3 = t.Cells(sat, "D")
    MALİYETHESABI.TextBox4 = t.Cells(sat, "E"): MALİYETHESABI.TextBox5 = t.Cells(sat, "F")
    MALİYETHESABI.TextBox7 = t.Cells(sat, "H"): MALİYETHESABI.ComboBox1 = t.Cells(sat, "I")
    MALİYETHESABI.TextBox6 = t.Cells(sat, "J"): MALİYETHESABI.TextBox8 = t.Cells(sat, "S")
    TEKLİFGEÇMİŞİ.Show
Exit Sub

[B][COLOR="blue"]End Sub[/COLOR][/B]

Teşekkür ederim.
Örnek dosya ile ilgili uyarınızı dikkate alacağım özür dilerim bilmiyordum.
 

Bir sorun daha ortaya çıktı daha önce başka bir programda kullandığım DÜZELTME komutunu bu programa uygulayamadım kod aşağıdadır.

TEKLİFGEÇMİŞİ userformunda ki bilgiye çift tıkla ilgili textbox ve combobox a aktarılıyor istenilen bilgi değiştirildikten sonra DÜZELT butonuna tıklanınca TEKLİFLER sayfasında ki kayıtlı veri üzerinde değişiklik yapmaya çalışıyorum.

Textbox9 > Sayaç
Textbox1 > Firma Adı

Kod:
Private Sub DÜZELT_Click()

On Error Resume Next
Sheets("TEKLİFLER").Select
Dim bos As Range
If TextBox9.Text = "sıra no" Then
MsgBox "sıra no Değeri değiştirilemez program tarafından kullanılıyor...", , "Değiştir Hatası!!!"
Exit Sub
End If
For Each bos In Range("B1:B" & WorksheetFunction.CountA(Range("B1:B65000")))
If TextBox1.Value = "" Or bos = "" Or ActiveCell = "" Then
MsgBox "KAYIT SEÇİNİZ"
Exit Sub
End If
Next bos
If MsgBox("FİRMA KAYDI DEĞİŞTİRİLŞCEK?", vbQuestion + vbYesNo) = vbYes Then
If TextBox9 = "" Or TextBox1 = "" Then
MsgBox "DEFTERDEN KAYIT SEÇİNİZ"
Else
ActiveCell.Value = TextBox1.Value
ActiveCell.Offset(0, 2).Value = TextBox2.Value
ActiveCell.Offset(0, 3).Value = TextBox3.Value
ActiveCell.Offset(0, 4).Value = TextBox4.Value
ActiveCell.Offset(0, 5).Value = TextBox5.Value
ActiveCell.Offset(0, 9).Value = TextBox6.Value
ActiveCell.Offset(0, 7).Value = TextBox7.Value
ActiveCell.Offset(0, 18).Value = TextBox8.Value
ActiveCell.Offset(0, 8).Value = ComboBox1.Value
MsgBox "" & TextBox1.Value & "FİRMA BİLGİLERİ GÜNCELLENDİ"
End If
TextBox1.RowSource = "TEKLİFLER!B1:B" & 1
TextBox9.Value = WorksheetFunction.Count(Range("A1:A65500")) + 1

End If


End Sub
Dosyayı uyarınız üzerine düzenleyip yükledim
 

Ekli dosyalar

Son düzenleme:
Tekrar merhaba.

Belgeniz ve userformlarındaki iş-işlem akışını bilemiyorum.
Açılışta MALİYETHESABI formu açılıyor ama boş ve bilgi çağırmak için bir işlem göremiyorum.
Ayrıca bu formda form BOŞ iken SİPARİŞ SİL düğmesine tıklandığında TEKLİFLER asyafasının 1'inci satırındaki bilgiler siliniyor.

Form kodlarında sayfa select kod'u kullanmak yerine işlem yapılacak sayfa adını her işlemde belirtmek daha doğru olur diye düşünüyorum, neticede EXCEL'i gizleyerek FORMLAR üzerinden çalışacaksınız sanırım.

MALİYET HESABI formu sadece TEKLİF GEÇMİMİŞİ formu üzerinden çağrılacaksa ve DÜZELTme işlemiyle birlikte MALİYETHESABI formunu kapatmak doğru olabilir, hatta TEKLİF GEÇMİŞİ formunda Textboxlar ekleyerek bilgileri bu textboxlara alıp değiştirme işlemi MALİYET formunu görüntülemeden de sağlanabilir.
Tabi belge ve tasarım size ait.

Düzeltme işleminde kriter olarak A sütunundaki ID bilgisi kullanılabilir.
Çünkü bu bilgi benzersiz ve SIRA NUMARASI şeklinde 1'den başlayıp 1'er artarak gidiyor.
İşlem yapılacak (silme/değiştirme) satır numarası (aynı zamanda MALİYET FORMUndaki TextBox9'da da var) ID+1 oluyor nasıl olsa.

Yukarıdaki hususlarla ilgili detay bilgi verirseniz, müsait olduğumda konuya bakarım elbette.

NOT: Önceki kod cevabımın en sonunda End If yerine Exit Sub yazmışım, önceki cevabımı buna göre değiştirdim.
.
 

iş-işlem akışı şu şekilde
Ana ekranım MALİYETHESABI userformu. Bu ekrandan Bilgi girişi yapılıyor

- HESAPLA butonuna basıldığında sadece görsel olarak hesaplama yapıp ekranda gösteriyor. MALİYET sayfasında ki formülleri kullanarak yapıyor.

- SİPARİŞ İŞLE butonuna basıldığında hesaplama yapıp bunları TEKLİFLER ve ÇIKTI sayfalarına aktarıyor.

- FORMU SİL butonu sadece MALİYETHESABI userformundaki TextBox ve ComboBox daki verileri temizliyor.

-SİPARİŞ SİL butonu ÇIKTI ve TEKLİFLER sayfasında ki verileri en son satırdan başlayarak siliyor. Bir sipariş işlendi ve yanlış oldu ise bu butonla ÇIKTI ve TEKLİFLER sayfasında ki kayıtlarını silmek için bunu ID üzerinden yapmadığım için sizin dediğiniz bir hata ortaya çıkıyor.

-DÜZELT butonu TEKLİFGEÇMİŞİ userformundan veriler geldiğinde çalışıyor. TEKLİFGEÇMİŞİ userformunda istenilen kayıta çift tıklandığında MALİYETHESABI user formunda ki TextBox ve ComboBox geliyor. Burada değişiklik yapıdıktan sonra DÜZELT butonuna basıldığında tekrar hesaplama yapıp (HESAPLA butonuna basılmış gibi) değiştirilen verinin TEKLİFLER sayfasında bulunduğu satırda değişiklikleri yapması gerekiyor.

-SİPARİŞ FORMU butonu ÇIKTI sayfasında ki verileri görmek için yani SİPARİŞFORMU userformu açılıyor buradaki SİL butonuda SİPARİŞ SİL butonu ile aynı mantıkla çalışıyor. YAZDIR butonuna basıldığında ÇIKTI sayfasını yazdırıyor ve temizleyip işlemi bitiriyor.

Bir de yazdığınız SİL butonu için olan kodda ListBox birşey seçilmemişse TEKLİFLER sayfasında ki ilk satırı siliyor bunu seçim yoksa çalışmaması için nasıl bir kod yazmamız gerekli

EKLEME:
Düzeltme butonunu TEKLİFLERGEÇMİŞİ userformuna aldım bu forma gereken TextBox ve ComboBox yerleştirdim ve ListBox a tek tıklama ile verileri aktarabildim ama düzeltme butonuna eklediğim kodu çalıştıramadım.

SİPARİŞ SİL butonuda SİPARİŞFORMU userformuna taşıdım verdiğiniz silme kodunu bu butona uygulayamadım yapmak istediğim SİPARİŞFORMU da ki ListBox ta seçilen veriyi ÇIKTI ve TEKLİFLER sayfasından silmek

Umarım anlaşılır yazabilmişimdir. Tekrar TEŞEKKÜR ederim ilgilendiğiniz için
 

Ekli dosyalar

Son düzenleme:
Geri
Üst