Listview aktarma kriter kontrolü

kemal turan

Altın Üye
Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,319
Excel Vers. ve Dili
Excel 2016
Merhaba,
Aşağıdaki kod ile listview 1 den listview 2 ye aktarma yapıyorum.
Listview 16 ncı kolonda "sevk edildi" verisi var ise aktarma yapmasını engellemek istiyorum.
Düşünerek yaptığım
a = ListView1.ListItems.Add.SubItems(16)
If a = "SEVK EDİLDİ" Then
MsgBox "Ürün sevk edilmiş. Lütfen sevkiyatı silin"
Exit Sub
End If

ıf kontrolu isteğimi sağlamadı.
yardımlarınızı rica ediyorum.
Kod:
Private Sub ListView1_DblClick()
Dim sevk As ListItem
Set sevk = ListView2.ListItems.Add(Text:=ListView1.SelectedItem)
'''''''düşündüğüm kontrol kodu

a = ListView1.ListItems.Add.SubItems(16)
If a = "SEVK EDİLDİ" Then
MsgBox "Ürün sevk edilmiş. Lütfen sevkiyatı silin"
Exit Sub
End If
''''''''''''''''''''''''''''''''''''''''''''''''''''

sevk.SubItems(1) = ListView1.SelectedItem.SubItems(1)
sevk.SubItems(2) = ListView1.SelectedItem.SubItems(2)
sevk.SubItems(3) = ListView1.SelectedItem.SubItems(3)
sevk.SubItems(4) = ListView1.SelectedItem.SubItems(4)
sevk.SubItems(5) = ListView1.SelectedItem.SubItems(5)
sevk.SubItems(6) = ListView1.SelectedItem.SubItems(6)
sevk.SubItems(7) = ListView1.SelectedItem.SubItems(7)
sevk.SubItems(8) = ListView1.SelectedItem.SubItems(8)
sevk.SubItems(9) = ListView1.SelectedItem.SubItems(9)
sevk.SubItems(10) = ListView1.SelectedItem.SubItems(10)
sevk.SubItems(11) = ListView1.SelectedItem.SubItems(11)
sevk.SubItems(12) = ListView1.SelectedItem.SubItems(12)
sevk.SubItems(13) = ListView1.SelectedItem.SubItems(13)
sevk.SubItems(14) = ListView1.SelectedItem.SubItems(14)
sevk.SubItems(15) = ListView1.SelectedItem.SubItems(15)
sevk.SubItems(16) = ListView1.SelectedItem.SubItems(16)
ListView1.ListItems.Remove (ListView1.SelectedItem.Index)
End Sub
 
Katılım
5 Kasım 2006
Mesajlar
481
Excel Vers. ve Dili
TÜRKCE Excel 2016
Merhaba,
Aşağıdaki kod ile listview 1 den listview 2 ye aktarma yapıyorum.
Listview 16 ncı kolonda "sevk edildi" verisi var ise aktarma yapmasını engellemek istiyorum.
Düşünerek yaptığım
a = ListView1.ListItems.Add.SubItems(16)
If a = "SEVK EDİLDİ" Then
MsgBox "Ürün sevk edilmiş. Lütfen sevkiyatı silin"
Exit Sub
End If

ıf kontrolu isteğimi sağlamadı.
yardımlarınızı rica ediyorum.
Kod:
Private Sub ListView1_DblClick()
Dim sevk As ListItem
Set sevk = ListView2.ListItems.Add(Text:=ListView1.SelectedItem)
'''''''düşündüğüm kontrol kodu

a = ListView1.ListItems.Add.SubItems(16)
If a = "SEVK EDİLDİ" Then
MsgBox "Ürün sevk edilmiş. Lütfen sevkiyatı silin"
Exit Sub
End If
''''''''''''''''''''''''''''''''''''''''''''''''''''

sevk.SubItems(1) = ListView1.SelectedItem.SubItems(1)
sevk.SubItems(2) = ListView1.SelectedItem.SubItems(2)
sevk.SubItems(3) = ListView1.SelectedItem.SubItems(3)
sevk.SubItems(4) = ListView1.SelectedItem.SubItems(4)
sevk.SubItems(5) = ListView1.SelectedItem.SubItems(5)
sevk.SubItems(6) = ListView1.SelectedItem.SubItems(6)
sevk.SubItems(7) = ListView1.SelectedItem.SubItems(7)
sevk.SubItems(8) = ListView1.SelectedItem.SubItems(8)
sevk.SubItems(9) = ListView1.SelectedItem.SubItems(9)
sevk.SubItems(10) = ListView1.SelectedItem.SubItems(10)
sevk.SubItems(11) = ListView1.SelectedItem.SubItems(11)
sevk.SubItems(12) = ListView1.SelectedItem.SubItems(12)
sevk.SubItems(13) = ListView1.SelectedItem.SubItems(13)
sevk.SubItems(14) = ListView1.SelectedItem.SubItems(14)
sevk.SubItems(15) = ListView1.SelectedItem.SubItems(15)
sevk.SubItems(16) = ListView1.SelectedItem.SubItems(16)
ListView1.ListItems.Remove (ListView1.SelectedItem.Index)
End Sub
a = ListView1.ListItems.Add.SubItems(16) yerine alttaki gibi deneyin.
a =ListView1.SelectedItem.SubItems(16)
 
Katılım
5 Kasım 2006
Mesajlar
481
Excel Vers. ve Dili
TÜRKCE Excel 2016
16 yerine 15 de denenebilir.
 

kemal turan

Altın Üye
Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,319
Excel Vers. ve Dili
Excel 2016
Merhaba,
Aşağıdaki hatayı verdi
 

Ekli dosyalar

kemal turan

Altın Üye
Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,319
Excel Vers. ve Dili
Excel 2016
Merhaba,
15 te de aynı hatayı verdi.
 

kemal turan

Altın Üye
Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,319
Excel Vers. ve Dili
Excel 2016
Burada yapmak istediğim.
Sipariş iptali olduğunda aktardığım bu verileri siliyorum.
Sevk yapılmış ise sevk edilenler başka bir sahifede depolanıyor.
Dolayısı ile silmede başka userformdan olmakta.
 
Katılım
5 Kasım 2006
Mesajlar
481
Excel Vers. ve Dili
TÜRKCE Excel 2016
Hatayı göremiyorum.
a olarak değişkene gerek yok.

a = ListView1.ListItems.Add.SubItems(16)
If a = "SEVK EDİLDİ" Then

yukarıdakileri silip alttaki ile deneyin 16 yerine 15 olarakta deneyebilirsiniz.

If ListView1.SelectedItem.SubItems(16) = "SEVK EDİLDİ" Then
 
Katılım
5 Kasım 2006
Mesajlar
481
Excel Vers. ve Dili
TÜRKCE Excel 2016
Merhaba,
Aşağıdaki hatayı verdi
Altın üyelik olmadığı için resmi göremedim fakat resmi büyütünce bulanıl şekeilde a değişkenini As ListItem olarak tanımlamışsınız galiba hata ondandır öyle ise.
virgülden sonra sadece a yazmanız yeterli.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
21,973
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Şöyle deneyin.Denemedim ama bu olabilir.:cool:
Kod:
SubItem(16)
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
21,973
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Sub itemden önceki gelen ifadeyi yazmadım.burada sadece s olmaması açısından baktım.:cool:
 

kemal turan

Altın Üye
Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,319
Excel Vers. ve Dili
Excel 2016
Merhaba,
Sorunu şöyle çözdüm.
Satışlar veri tabanı Id numarasını sevk kaydı oluşturduğumda Sevkiyatlar veri tabanında "b" sutununa Satış Id noyu veri olarak girmiştim.
Aşağıdaki kod ile Satış veri tabanından kaldırıken aynı zamanda "sevksıl" kodları ile sevkinide silmeyi başardım.
Böylece tek tuşla silinen satış kaydının sevkinide silmiş oldum.
İlgi ve alakanız için teşekkür ederim.
Selametle
Kod:
Private Sub CommandButton1_Click()
Dim cvp As String
Dim s, y As Long
Dim z As Long
Dim a As Integer
Dim ara As Range

a = 0
For s = 1 To ListView2.ListItems.Count
If ListView2.ListItems(s).Checked = True Then
a = a + 1
End If
Next s
If a = 0 Then
MsgBox "SATIŞ İPTALİ İÇİN ÖNCE ÜRÜN SEÇMELİSİNİZ.  ", , " not "
Exit Sub
End If
cvp = MsgBox(" SEÇİLEN KAYITLARI KALICI OLARAK SEVKİNİ İPTAL ETMEK İSTİYORMUSUNUZ?  ", vbYesNo, " not ")
If cvp = vbYes Then
For y = 1 To ListView2.ListItems.Count
If ListView2.ListItems(y).Checked = True Then
Set ara = Sheets("satış").Range("a2:a65536").Find(ListView2.ListItems(y), , xlValues, xlWhole)
If Not ara Is Nothing Then
  ara.EntireRow.Delete
    y = y
End If
Else
End If
Next
sevksıl
Else
MsgBox " SİLME İŞLEMİ İSTEĞİNİZ ÜZERE İPTAL EDİLDİ.  ", , " not "
Exit Sub
End If
MsgBox " SEÇİLEN KAYITLAR SATIŞLAR VERİ TABANINDAN KALDIRILDI.  ", , " not "
sevksıl
End Sub
Sub sevksıl()
Dim s, y As Long
Dim z As Long
Dim a As Integer
Dim ara As Range
a = 0
For s = 1 To ListView2.ListItems.Count
If ListView2.ListItems(s).Checked = True Then
a = a + 1
End If
Next s
For y = 1 To ListView2.ListItems.Count
If ListView2.ListItems(y).Checked = True Then
Set ara = Sheets("sevkiyat").Range("b2:b65536").Find(ListView2.ListItems(y), , xlValues, xlWhole)
If Not ara Is Nothing Then
  ara.EntireRow.Delete
    y = y
End If
Else
End If
Next
sevkıyathesap
ListView2.ListItems.Clear
End Sub
 
Katılım
5 Kasım 2006
Mesajlar
481
Excel Vers. ve Dili
TÜRKCE Excel 2016
Merhaba,
Sorunu şöyle çözdüm.
Satışlar veri tabanı Id numarasını sevk kaydı oluşturduğumda Sevkiyatlar veri tabanında "b" sutununa Satış Id noyu veri olarak girmiştim.
Aşağıdaki kod ile Satış veri tabanından kaldırıken aynı zamanda "sevksıl" kodları ile sevkinide silmeyi başardım.
Böylece tek tuşla silinen satış kaydının sevkinide silmiş oldum.
İlgi ve alakanız için teşekkür ederim.
Selametle
Kod:
Private Sub CommandButton1_Click()
Dim cvp As String
Dim s, y As Long
Dim z As Long
Dim a As Integer
Dim ara As Range

a = 0
For s = 1 To ListView2.ListItems.Count
If ListView2.ListItems(s).Checked = True Then
a = a + 1
End If
Next s
If a = 0 Then
MsgBox "SATIŞ İPTALİ İÇİN ÖNCE ÜRÜN SEÇMELİSİNİZ.  ", , " not "
Exit Sub
End If
cvp = MsgBox(" SEÇİLEN KAYITLARI KALICI OLARAK SEVKİNİ İPTAL ETMEK İSTİYORMUSUNUZ?  ", vbYesNo, " not ")
If cvp = vbYes Then
For y = 1 To ListView2.ListItems.Count
If ListView2.ListItems(y).Checked = True Then
Set ara = Sheets("satış").Range("a2:a65536").Find(ListView2.ListItems(y), , xlValues, xlWhole)
If Not ara Is Nothing Then
  ara.EntireRow.Delete
    y = y
End If
Else
End If
Next
sevksıl
Else
MsgBox " SİLME İŞLEMİ İSTEĞİNİZ ÜZERE İPTAL EDİLDİ.  ", , " not "
Exit Sub
End If
MsgBox " SEÇİLEN KAYITLAR SATIŞLAR VERİ TABANINDAN KALDIRILDI.  ", , " not "
sevksıl
End Sub
Sub sevksıl()
Dim s, y As Long
Dim z As Long
Dim a As Integer
Dim ara As Range
a = 0
For s = 1 To ListView2.ListItems.Count
If ListView2.ListItems(s).Checked = True Then
a = a + 1
End If
Next s
For y = 1 To ListView2.ListItems.Count
If ListView2.ListItems(y).Checked = True Then
Set ara = Sheets("sevkiyat").Range("b2:b65536").Find(ListView2.ListItems(y), , xlValues, xlWhole)
If Not ara Is Nothing Then
  ara.EntireRow.Delete
    y = y
End If
Else
End If
Next
sevkıyathesap
ListView2.ListItems.Clear
End Sub
Hayırlı olsun diyelim artık :)
İlk verdiğiniz kodlarla alakası yok :)
Bizlerde rica ederiz abey.
 

kemal turan

Altın Üye
Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,319
Excel Vers. ve Dili
Excel 2016
Orıon hocam iyi geceler,
Aşağıdaki şekildede hata verdi.
Sorunu çözdüm ama bu kontrolu başarabilirsek başka bir yerde kullanabilirim.
teşekkür ederim.
Kod:
Private Sub ListView1_DblClick()
Dim sevk As ListItem, a As ListItems
Set sevk = ListView2.ListItems.Add(Text:=ListView1.SelectedItem)
a = ListView1.ListItems.SubItem(16)
If a = "SEVK EDİLDİ" Then
MsgBox "Ürün sevk edilmiş. Lütfen sevkiyatı silin"
Exit Sub
End If
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
21,973
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Örnek dosya eklerseniz ben yada arkadaşlar konuya bakabilir diye düşünüyorum.:cool:
 
Katılım
5 Kasım 2006
Mesajlar
481
Excel Vers. ve Dili
TÜRKCE Excel 2016
Dim sevk As ListItem, a
Yukardaki gibi olmalı a daha öncede yazmıştım.
 

kemal turan

Altın Üye
Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,319
Excel Vers. ve Dili
Excel 2016
Orıon hocam,
Excel sürüm 2010 32 bit.
Bildiğiniz gibi listview nesnesi diğer sürümlerde sorun çıkarabiliyor.
Excel açıldığında "perakende satışlar" butonuna tıklayalım.
Açılan userformda textbox a "A" yazdığımızda satışlar listesi listview1 e veri geliyor.
Çift tıkladığımızda listview2 ye aktarıyor. Tam burda kontrol yapmak istiyorum.
 

Ekli dosyalar

kemal turan

Altın Üye
Altın Üye
Katılım
10 Haziran 2011
Mesajlar
1,319
Excel Vers. ve Dili
Excel 2016
Dim sevk As ListItem, a
Yukardaki gibi olmalı a daha öncede yazmıştım.
Sn feraz bey hayırlı geceler,
Aşağıdaki şekilde de hata verdi.
Teşekkür ederim.
Kod:
Private Sub ListView1_DblClick()
Dim sevk As ListItem, a
Set sevk = ListView2.ListItems.Add(Text:=ListView1.SelectedItem)
a = ListView1.ListItems.SubItems(16)
If a = "SEVK EDİLDİ" Then
MsgBox "Ürün sevk edilmiş. Lütfen sevkiyatı silin"
Exit Sub
End If
 
Katılım
5 Kasım 2006
Mesajlar
481
Excel Vers. ve Dili
TÜRKCE Excel 2016
Sn feraz bey hayırlı geceler,
Aşağıdaki şekilde de hata verdi.
Teşekkür ederim.
Kod:
Private Sub ListView1_DblClick()
Dim sevk As ListItem, a
Set sevk = ListView2.ListItems.Add(Text:=ListView1.SelectedItem)
a = ListView1.ListItems.SubItems(16)
If a = "SEVK EDİLDİ" Then
MsgBox "Ürün sevk edilmiş. Lütfen sevkiyatı silin"
Exit Sub
End If
Hayırlı geceler üstad.
Üstadlar ilgilenir.Benim altınım yok :)
Kolay gelsin.
 
Üst