• DİKKAT

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

Değiştir Butonun Yanlış Çalışması

Katılım
15 Nisan 2008
Mesajlar
303
Excel Vers. ve Dili
2010
Arkadaşlar aşağıdaki kodlara göre listviewden textboxlara aldığım verileri değiştirebiliyorum yalnız önceki bir kayıtı seçip bazı textboxları boş bırakıp değiştirmek istediğimde değiştirme işlemi olmuyor önceki değerler tekrar çift tıklayınca geliyor, farklı değer girdiğim zaman problem yok, textbox boş ise boş olarak değiştirme işlemini nasıl gerçekleştirebilirim, yardımlarınızı bekliyorum, saygılar.

Kod:
Dim Satir As Long, sh As Worksheet
' SAYFADA VERİYİ BULUP, KAYDI DEĞİŞTİRİR
If ListView1.SelectedItem Is Nothing Then
    MsgBox "Lütfen listeden bir seçim yapınız!", vbCritical, "UYARI"
    Exit Sub
End If
If MsgBox("Seçili satırı değiştirmek istiyormusunuz?", vbYesNo + vbQuestion, "DEĞİŞTİR") = vbNo Then
    ListView1.SelectedItem = Nothing
    Exit Sub
End If

Set sh = Sheets("Testler")
Satir = ListView1.SelectedItem.Index
Satir = ListView1.SelectedItem.Index + 8 

sh.Cells(Satir, 2) = TextBox2.Text
.
.
.
.
sh.Cells(Satir, 513) = ComboBox10.Text
sh.Cells(Satir, 514) = TextBox504.Text

Set sh = Nothing
MsgBox "Seçilen Kayıt Değiştirildi.", vbInformation, "BİLGİ"
Call liste
 
yukarıdaki kodlarda sorun yok ama bir de

Kod:
Call liste

ile çalışan kodlara bakmak lazım belkide orada problem vardır.
 
liste kodlarıda bunlar Sayın dalgalikur,

Kod:
Private Sub liste()
Dim sat As Long, i As Long, k As Integer, sh As Worksheet
Dim j As Integer
Dim tmerkezi As String, testtrafo As String
Dim testyil As Integer, tarih As Date
ListView1.ListItems.Clear
' SAYFADAKİ VERİLERİ LISTVIEW İÇİNE ALIR
ListView1.ListItems.Clear
Set sh = Sheets("Testler")
sat = sh.Cells(Rows.Count, "A").End(xlUp).Row
j = 1
For i = 9 To sat
    If ComboBox11.Value = "" Then
        tmerkezi = UCase(Replace(Replace(sh.Cells(i, "C").Value, "i", "İ"), "ı", "I"))
    Else
        tmerkezi = UCase(Replace(Replace(ComboBox11.Value, "i", "İ"), "ı", "I"))
    End If
    If ComboBox13.Value = "" Then
        testtrafo = UCase(Replace(Replace(sh.Cells(i, "F").Value, "i", "İ"), "ı", "I"))
    Else
        testtrafo = ComboBox13.Value
    End If
    If ComboBox12.Value = "" Then
        testyil = sh.Cells(i, "D").Value
    Else
        testyil = ComboBox12.Value
    End If
        
    If tmerkezi = UCase(Replace(Replace(sh.Cells(i, "C").Value, "i", "İ"), "ı", "I")) And _
        testtrafo = sh.Cells(i, "F").Value And testyil = CInt(sh.Cells(i, "D").Value) Then
        ListView1.ListItems.Add , , sh.Cells(i, "A").Value
        For k = 1 To 514
            ListView1.ListItems(j).SubItems(k) = sh.Cells(i, k + 1).Value
        Next k
        j = j + 1
    End If
Next i
ListView1.SelectedItem = Nothing
End Sub

Bu kodları çalışmamda emeğini unutamayacağım Orion1 düzenlemişti ayrıca.
 
Kod:
  On Error Resume Next
  If ListView1.ListItems.Count = 0 Then Exit Sub
    X = ListView1.SelectedItem.Index

    TextBox1.Text = ListView1.ListItems(X)
    TextBox2.Text = ListView1.ListItems(X).ListSubItems(1).Text
    ComboBox1.Text = ListView1.ListItems(X).ListSubItems(2).Text
    ComboBox2.Text = ListView1.ListItems(X).ListSubItems(3).Text
    TextBox3.Text = ListView1.ListItems(X).ListSubItems(4).Text
    ComboBox3.Text = ListView1.ListItems(X).ListSubItems(5).Text
    TextBox4.Text = ListView1.ListItems(X).ListSubItems(6).Text
    For i = 5 To 13
        Controls("TextBox" & i) = ListView1.ListItems(X).ListSubItems(i + 2).Text
    Next
    ComboBox4.Text = ListView1.ListItems(X).ListSubItems(16).Text
    For i = 14 To 66
        Controls("TextBox" & i) = ListView1.ListItems(X).ListSubItems(i + 3).Text
    Next
    ComboBox5.Text = ListView1.ListItems(X).ListSubItems(70).Text
    TextBox67.Text = ListView1.ListItems(X).ListSubItems(71).Text
    
    
         
    For i = 68 To 127
        Controls("TextBox" & i) = ListView1.ListItems(X).ListSubItems(i + 4).Text
    Next
    
    ComboBox6.Text = ListView1.ListItems(X).ListSubItems(132).Text
    TextBox128.Text = ListView1.ListItems(X).ListSubItems(133).Text
    
    For i = 129 To 218
        Controls("TextBox" & i) = ListView1.ListItems(X).ListSubItems(i + 5).Text
    Next
    
    ComboBox7.Text = ListView1.ListItems(X).ListSubItems(224).Text
    TextBox219.Text = ListView1.ListItems(X).ListSubItems(225).Text
          
    For i = 220 To 234
        Controls("TextBox" & i) = ListView1.ListItems(X).ListSubItems(i + 6).Text
    Next
    
    ComboBox8.Text = ListView1.ListItems(X).ListSubItems(241).Text
    TextBox235.Text = ListView1.ListItems(X).ListSubItems(242).Text
    
      
       
    For i = 236 To 369
        Controls("TextBox" & i) = ListView1.ListItems(X).ListSubItems(i + 7).Text
    Next
       
    ComboBox9.Text = ListView1.ListItems(X).ListSubItems(377).Text
    TextBox370.Text = ListView1.ListItems(X).ListSubItems(378).Text
       
    
    For i = 371 To 503
        Controls("TextBox" & i) = ListView1.ListItems(X).ListSubItems(i + 8).Text
    Next
       
    ComboBox10.Text = ListView1.ListItems(X).ListSubItems(512).Text
    TextBox504.Text = ListView1.ListItems(X).ListSubItems(513).Text
              
    yeni = False
       
  
   
End Sub

Çift tıklayınca verileri getirme kodu bu hocam, değer girdiğim zaman problem yok, textboxu boş bırakıp değiştirirsem değişmiyor , eski veriler geri geliyor çift tıklamayla.
 
Arkadaşlar şu konuya bir yardımcı olurmusunuz, nerde sorun var bir türlü çözemedim.
 
Eğer son verdiğiniz kod listview in dblclick olayında ise sorunu bulamadım.

Dosyanızı bir upload sitesine yükleseydiniz belki yardımcı olabilirdik.
 
oradaki dosyada veriler sutün3, sutün4 ve sutün6 da veriler var bu veriler combobox a geliyor ve onlardan silinemiyor. Siz nereyi silince veriler silinmiyor.
 
ne ilginçtirki bu dosyamda bu problem yok. buradaki comboboxlar hariç herhangi bir textboxa bir değer girdiğim zaman ve doğru bir şekilde değiştriyor, aynı şekilde boş bıraktığım zaman boş bir şekilde değiştiriyor, bendeki dosyada textbox boşsa eski değer geri geliyor, çözmedim gitti.
 
ne ilginçtirki bu dosyamda bu problem yok. buradaki comboboxlar hariç herhangi bir textboxa bir değer girdiğim zaman ve doğru bir şekilde değiştriyor, aynı şekilde boş bıraktığım zaman boş bir şekilde değiştiriyor, bendeki dosyada textbox boşsa eski değer geri geliyor, çözmedim gitti.

Aşağıdaki prosedürleri yeniden yapıştırın.:cool:
Kod:
Private Sub liste()
Dim sat As Long, i As Long, k As Integer, sh As Worksheet
Dim j As Integer
Dim tmerkezi As String, testtrafo As String
Dim testyil As Integer, tarih As Date
'Güç Trafoları testleri başlangıcı
ListView1.ListItems.Clear
' SAYFADAKİ VERİLERİ LISTVIEW İÇİNE ALIR
ListView1.ListItems.Clear
Set sh = Sheets("GüçTrafolarıTestleri")
sat = sh.Cells(Rows.Count, "A").End(xlUp).Row
j = 1
For i = 9 To sat
    If ComboBox1.Value = "" Then
        tmerkezi = UCase(Replace(Replace(sh.Cells(i, "C").Value, "i", "İ"), "ı", "I"))
    Else
        tmerkezi = UCase(Replace(Replace(ComboBox1.Value, "i", "İ"), "ı", "I"))
    End If
    If ComboBox3.Value = "" Then
        testtrafo = UCase(Replace(Replace(sh.Cells(i, "F").Value, "i", "İ"), "ı", "I"))
    Else
        testtrafo = ComboBox3.Value
    End If
    If ComboBox2.Value = "" Then
        testyil = sh.Cells(i, "D").Value
    Else
        testyil = ComboBox2.Value
    End If
        
    If tmerkezi = UCase(Replace(Replace(sh.Cells(i, "C").Value, "i", "İ"), "ı", "I")) And _
        testtrafo = sh.Cells(i, "F").Value And testyil = CInt(sh.Cells(i, "D").Value) Then
        ListView1.ListItems.Add , , sh.Cells(i, "A").Value
        For k = 1 To 226
            ListView1.ListItems(j).SubItems(k) = sh.Cells(i, k + 1).Value
        Next k
        [B][COLOR="Red"]ListView1.ListItems(j).SubItems(227) = i[/COLOR][/B]
        j = j + 1
    End If
Next i
ListView1.SelectedItem = Nothing
End Sub

Kod:
Private Sub CommandButton2_Click()
Dim Satir As Long, sh As Worksheet
' SAYFADA VERİYİ BULUP, KAYDI DEĞİŞTİRİR(Trafo % pf testleri)
If ListView1.SelectedItem Is Nothing Then
    MsgBox "Lütfen listeden bir seçim yapınız!", vbCritical, "UYARI"
    Exit Sub
End If
If MsgBox("Seçili satırı değiştirmek istiyormusunuz?", vbYesNo, "DEĞİŞTİR") = vbNo Then
    ListView1.SelectedItem = Nothing
    Exit Sub
End If
Set sh = Sheets("GüçTrafolarıTestleri")
[B][COLOR="Red"]Satir = ListView1.SelectedItem.SubItems(227)[/COLOR][/B]
'Satir = ListView1.SelectedItem.Index + 8 ' 13 RAKAMINI SÜTUN SAYINIZA GÖRE AYARLAYIN
sh.Cells(Satir, 2) = TextBox2.Text
sh.Cells(Satir, 3) = ComboBox1.Text
sh.Cells(Satir, 4) = ComboBox2.Text
sh.Cells(Satir, 5) = TextBox3.Text
sh.Cells(Satir, 6) = ComboBox3.Text

For i = 7 To 16
    sh.Cells(Satir, i) = Controls("TextBox" & i - 3)
Next i
sh.Cells(Satir, 17) = ComboBox4.Text
For i = 18 To 70
    sh.Cells(Satir, i).Value = Controls("TextBox" & i - 4)
Next i
sh.Cells(Satir, 71) = ComboBox5.Text
sh.Cells(Satir, 72) = TextBox67.Text

For i = 73 To 132
    sh.Cells(Satir, i) = Controls("TextBox" & i - 5)
Next i

sh.Cells(Satir, 133) = ComboBox6.Text
sh.Cells(Satir, 134) = TextBox128.Text

For i = 135 To 224
    sh.Cells(Satir, i) = Controls("TextBox" & i - 6)
Next i

sh.Cells(Satir, 225) = ComboBox7.Text
sh.Cells(Satir, 226) = TextBox219.Text

For i = 227 To 241
    sh.Cells(Satir, i) = Controls("TextBox" & i - 7)
Next i
sh.Cells(Satir, 242) = ComboBox8.Text
sh.Cells(Satir, 243) = TextBox235.Text

For i = 244 To 377
    sh.Cells(Satir, i) = Controls("TextBox" & i - 8)
Next i
sh.Cells(Satir, 378) = ComboBox9.Text
sh.Cells(Satir, 379) = TextBox370.Text

For i = 380 To 512
    sh.Cells(Satir, i) = Controls("TextBox" & i - 9)
Next i
sh.Cells(Satir, 513) = ComboBox10.Text
sh.Cells(Satir, 514) = TextBox504.Text

Call liste
End Sub
 
hocam sizi tekrar rahatsız ediyorum kusura bakmayın. sayenizde yaptığım çalışmayı uygulamaya başladım veri girdikçe böyle sorunlarla karşılaşıyorum buda onlardan bitanesi

bunu denedim hocam run time error 380 invalid property value hatasını aldım.
 
hocam sizi tekrar rahatsız ediyorum kusura bakmayın. sayenizde yaptığım çalışmayı uygulamaya başladım veri girdikçe böyle sorunlarla karşılaşıyorum buda onlardan bitanesi

bunu denedim hocam run time error 380 invalid property value hatasını aldım.

Benim yolladığım dosyada çalışıyordu.
Sizin nerede kullandınız.başka dosyadamı?
 
işin enterasan tarafıda bu hocam, bunu bu şekilde ne etkiler anlamış değilim sizin göndermiş olduğunuz dosyadaki kodlarla kendi dosyamdaki kodları karşılaştırıyorum aynı, ama burada olmuyor ne etkileyebilir kodların tamamamını eklesem olurmu hocam. dosya ekleyemiyorum.
 
işin enterasan tarafıda bu hocam, bunu bu şekilde ne etkiler anlamış değilim sizin göndermiş olduğunuz dosyadaki kodlarla kendi dosyamdaki kodları karşılaştırıyorum aynı, ama burada olmuyor ne etkileyebilir kodların tamamamını eklesem olurmu hocam. dosya ekleyemiyorum.

sanırım bebim yolladığım kodları yapıştırdınız.
Ama yapıştırmadan önce o prosedürleri silmeniz lazımdı.
 
hangi prosedürü sileceğim hocam, sorun sadece önceki bir kayıdı textboxlara çağırıp içeriğini boş olarak textbox değiştirmek istiyorum ama değiştirildi uyarısı geliyor ama eski veriler geri geliyor listviewden. değer yazdığım zaman problem yok.
 
hangi prosedürü sileceğim hocam, sorun sadece önceki bir kayıdı textboxlara çağırıp içeriğini boş olarak textbox değiştirmek istiyorum ama değiştirildi uyarısı geliyor ama eski veriler geri geliyor listviewden. değer yazdığım zaman problem yok.

Hata veriyor demiştiniz.Şimdi düzeldimi?
 
Hocam 11. mesajdaki düzenlemeyi yapınca hata alıyorum öncesindede durum yukarıda belirttiğim gibi.
 
Hocam 11. mesajdaki düzenlemeyi yapınca hata alıyorum öncesindede durum yukarıda belirttiğim gibi.

11nci mesajdaki kodları yapıştırmadan önce liste ve commandbutton2_click prosedür ve olayı siliniz.Sonra 11nci mesajdakileri yapıştırın.
 
Hocam sorunu çözdüm, sorun userformdan excele kayıt yaparken
CDBl formatında kayıt yapmamdan kaynaklanıyormuş normal text formatına çevirince sorun çözüldü, ama buda bir problem benim için

Bu şekilde değiştirme uygulayınca textboxu boşta bıraksam sorun olmuyor

For i = 7 To 12
sh.Cells(Satir, i) = Controls("TextBox" & i - 3)
Next i

yalnız aşağıdaki gibi yapıp textboxu boş bıraktığımda tekrar listviewe tıklayınca eski veri geliyor yani boş textbox olarak değişim gerçekleşmiyo, bunu çözmenin yolu varmı acaba, sayısal değer yada boş olarak textboxları değiştirme gerçekleştirmeliyim.

For i = 7 To 12
sh.Cells(Satir, i).Value = CDbl(Controls("TextBox" & i - 3))
Next i
 
Geri
Üst