• DİKKAT

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

Listview ile değiştir butonu

Katılım
30 Temmuz 2013
Mesajlar
23
Excel Vers. ve Dili
excel 2007
Merhaba, projemde listview objesi mevcut. Yapmak istediğim şey çift tıkladığımda gelen verileri değiştirip kaydetmek. Şuanda çift tıkladığımda verileri textboxlara taşıyabiliyorum. İlgili kodları aşağıya yazıyorum. Buna göre değiştir butonunu nasıl yapabilirim yardımcı olabilir misiniz?

çift tıklayınca verileri textboxlara taşıma

Kod:
Private Sub ListView1_DblClick()
On Error Resume Next

x = ListView1.SelectedItem.Index
ComboBox3 = ListView1.ListItems(x).ListSubItems(3)
TextBox3 = ListView1.ListItems(x).ListSubItems(2)
TextBox6 = ListView1.ListItems(x).ListSubItems(5)
TextBox7 = ListView1.ListItems(x).ListSubItems(6)
TextBox8 = ListView1.ListItems(x).ListSubItems(7)
TextBox9 = ListView1.ListItems(x).ListSubItems(8)
TextBox2 = ListView1.ListItems(x).ListSubItems(1)
TextBox5 = ListView1.ListItems(x).ListSubItems(4)
TextBox11 = ListView1.ListItems(x).ListSubItems(10)
TextBox10 = ListView1.ListItems(x).ListSubItems(9)
ComboBox2 = ListView1.ListItems(x)

End Sub


______________________________________________________________


Private Sub UserForm_Initialize()

With ListView1
       .View = lvwReport      
       .ColumnHeaders.Add , , "Teknisyen ", 110
      .ColumnHeaders.Add , , "Arıza No  ", 44
      .ColumnHeaders.Add , , "S.Form No ", 50
      .ColumnHeaders.Add , , "Restoran ", 135
     .ColumnHeaders.Add , , "Yapılan Çalışma ", 100     
     .ColumnHeaders.Add , , "Başlama Tarihi ", 55 
     .ColumnHeaders.Add , , "B.Saati ", 43 
     .ColumnHeaders.Add , , "Sonuç Tarihi ", 55 
     .ColumnHeaders.Add , , "S.Saati ", 43 
     .ColumnHeaders.Add , , "Mesai ", 43 
     .ColumnHeaders.Add , , "Açıklama ", 60 
   .FullRowSelect = True    .Gridlines = True 

End With

Dim x As Integer
    Dim Liste As ListItem 
        ListView1.ListItems.Clear 
           For i = 3 To [a65536].End(3).Row 
              x = x + 1 
               Set Liste = ListView1.ListItems.Add(, , Cells(i, 1).Value) 
                   
                    
                    Liste.SubItems(1) = Cells(i, 2).Value 'Üçüncü sütuna 3. sütun
                    Liste.SubItems(2) = Cells(i, 3).Value
                    Liste.SubItems(3) = Cells(i, 4).Value
                    Liste.SubItems(4) = Cells(i, 5).Value
                    Liste.SubItems(5) = Cells(i, 6).Value
                    Liste.SubItems(6) = Cells(i, 7).Value
                    Liste.SubItems(7) = Cells(i, 8).Value
                    Liste.SubItems(8) = Cells(i, 9).Value
                    Liste.SubItems(9) = Cells(i, 10).Value
                    Liste.SubItems(10) = Cells(i, 11).Value
                                  
            Next i
    Set Liste = Nothing

Save butonu

Kod:
Private Sub CommandButton1_Click() 'Saving Button
Dim sonsat As Integer


If ComboBox3.Value = "" Then
        MsgBox "Lütfen Restoran Seçiniz.", vbExclamation
        ComboBox3.SetFocus
        Exit Sub
    End If
    If TextBox3.Value = "" Then
        MsgBox "Please enter an Adress.", vbExclamation
        TextBox3.SetFocus
        Exit Sub
    End If
    
Me.TextBox10 = CSng((CDate(Me.TextBox8.Text + " " + Me.TextBox9.Text) - CDate(Me.TextBox6.Text + " " + Me.TextBox7.Text)) * 24) * 60
TextBox10.Value = Format((TextBox10.Text / 24) / 60, "hh:mm:ss")


sonsat = Sheets("Data").[a65536].End(3).Row + 1
Cells(sonsat, 1) = ComboBox2.Text
Cells(sonsat, 2) = TextBox2.Text
Cells(sonsat, 3) = TextBox3.Text
Cells(sonsat, 4) = ComboBox3.Text
Cells(sonsat, 5) = TextBox5.Text
Cells(sonsat, 6) = TextBox6.Text
Cells(sonsat, 7) = TextBox7
Cells(sonsat, 8) = TextBox8.Text
Cells(sonsat, 9) = TextBox9
Cells(sonsat, 10) = TextBox10
Cells(sonsat, 11) = TextBox11.Text

MsgBox "Kayıt Başarılı"

Call UserForm_Initialize


End Sub


Sil butonu

Kod:
Private Sub CommandButton3_Click() ' Delete Button

   Dim res As Integer
     
    res = MsgBox("Seçili içeriği silmek istediğinize emin misiniz?", vbYesNo + vbDefaultButton2, "Sil")
     
    If res = vbNo Then
        Exit Sub
    Else
        If Not ListView1.SelectedItem Is Nothing Then
             ListView1.ListItems.Remove (ListView1.SelectedItem.Index)
        ElseIf ListView1.ListItems.Count = 0 Then
            MsgBox "Veri silinemedi!...", vbExclamation, "Sil"
        Else
            MsgBox "Lütfen silmek istediğiniz satırı seçin...", vbInformation, "Sil"
        End If
    End If
   
End Sub
 
Burada dikkat edeceğin nokta listeye veri alırken verilere ait satır numarası yani indis değerini alacaksınız.

kırmızı yerlere dikkat ediniz.

Kod:
Private Sub UserForm_Initialize()

With ListView1
       .View = lvwReport
      [COLOR="red"] .ColumnHeaders.Add , , "sıra no ", 30[/COLOR]
       .ColumnHeaders.Add , , "Teknisyen ", 110
      .ColumnHeaders.Add , , "Arıza No  ", 44
      .ColumnHeaders.Add , , "S.Form No ", 50
      .ColumnHeaders.Add , , "Restoran ", 135
     .ColumnHeaders.Add , , "Yapılan Çalışma ", 100
     .ColumnHeaders.Add , , "Başlama Tarihi ", 55
     .ColumnHeaders.Add , , "B.Saati ", 43
     .ColumnHeaders.Add , , "Sonuç Tarihi ", 55
     .ColumnHeaders.Add , , "S.Saati ", 43
     .ColumnHeaders.Add , , "Mesai ", 43
     .ColumnHeaders.Add , , "Açıklama ", 60
   .FullRowSelect = True    .Gridlines = True

End With

Dim x As Integer
    Dim Liste As ListItem
        ListView1.ListItems.Clear
           For i = 3 To [a65536].End(3).Row
              x = x + 1
               Set Liste = ListView1.ListItems.Add(, ,[COLOR="Red"] i[/COLOR])
                   
                    
                    Liste.SubItems(1) = Cells(i, 1).Value
                    Liste.SubItems(2) = Cells(i, 2).Value 'Üçüncü sütuna 3. sütun
                    Liste.SubItems(3) = Cells(i, 3).Value
                    Liste.SubItems(4) = Cells(i, 4).Value
                    Liste.SubItems(5) = Cells(i, 5).Value
                    Liste.SubItems(6) = Cells(i, 6).Value
                    Liste.SubItems(7) = Cells(i, 7).Value
                    Liste.SubItems(8) = Cells(i, 8).Value
                    Liste.SubItems(9) = Cells(i, 9).Value
                    Liste.SubItems(10) = Cells(i, 10).Value
                     Liste.SubItems(11) = Cells(i, 11).Value
                                  
            Next i
    Set Liste = Nothing
 
Düzelt komut düğmende böyle olmalı kırmızı yerlere dikkat eden.

Kod:
Private Sub CommandButton1_Click() 'Saving Button
Dim sonsat As Integer


If ComboBox3.Value = "" Then
        MsgBox "Lütfen Restoran Seçiniz.", vbExclamation
        ComboBox3.SetFocus
        Exit Sub
    End If
    If TextBox3.Value = "" Then
        MsgBox "Please enter an Adress.", vbExclamation
        TextBox3.SetFocus
        Exit Sub
    End If
    
Me.TextBox10 = CSng((CDate(Me.TextBox8.Text + " " + Me.TextBox9.Text) - CDate(Me.TextBox6.Text + " " + Me.TextBox7.Text)) * 24) * 60
TextBox10.Value = Format((TextBox10.Text / 24) / 60, "hh:mm:ss")


'sonsat = Sheets("Data").[a65536].End(3).Row + 1

[COLOR="red"]sonsat = ListView1.ListItems(ListView1.SelectedItem.Index)
'sonsat = ListView1.ListItems(ListView1.SelectedItem.Index).Text
[/COLOR]

Cells(sonsat, 1) = ComboBox2.Text
Cells(sonsat, 2) = TextBox2.Text
Cells(sonsat, 3) = TextBox3.Text
Cells(sonsat, 4) = ComboBox3.Text
Cells(sonsat, 5) = TextBox5.Text
Cells(sonsat, 6) = TextBox6.Text
Cells(sonsat, 7) = TextBox7
Cells(sonsat, 8) = TextBox8.Text
Cells(sonsat, 9) = TextBox9
Cells(sonsat, 10) = TextBox10
Cells(sonsat, 11) = TextBox11.Text

MsgBox "Kayıt Başarılı"

Call UserForm_Initialize


End Sub
 
Merhaba , öncelikle ilgiliniz için teşekkür ederim. Değiştir butonunu belirttiğiniz gibi yaptım ancak bu iki satır hata verdi.

sonsat = ListView1.ListItems(ListView1.SelectedItem.Index)
sonsat = ListView1.ListItems(ListView1.SelectedItem.Index).Text
 
Örnek dosyanız olsaydı belki daha kolay çözüm üretilirdi.
kodlar

Kod:
Private Sub UserForm_Initialize()

With ListView1
.View = lvwReport
[COLOR="red"].ColumnHeaders.Add , , "sıra no ", 30[/COLOR]
.ColumnHeaders.Add , , "Teknisyen ", 110
.ColumnHeaders.Add , , "Arıza No  ", 44
.ColumnHeaders.Add , , "S.Form No ", 50
.ColumnHeaders.Add , , "Restoran ", 135
.ColumnHeaders.Add , , "Yapılan Çalışma ", 100
.ColumnHeaders.Add , , "Başlama Tarihi ", 55
.ColumnHeaders.Add , , "B.Saati ", 43
.ColumnHeaders.Add , , "Sonuç Tarihi ", 55
.ColumnHeaders.Add , , "S.Saati ", 43
.ColumnHeaders.Add , , "Mesai ", 43
.ColumnHeaders.Add , , "Açıklama ", 60
.FullRowSelect = True
.Gridlines = True

End With

Dim x As Integer
Dim Liste As ListItem
ListView1.ListItems.Clear
For i = 3 To [a65536].End(3).Row
x = x + 1
Set Liste = ListView1.ListItems.Add(, ,[COLOR="red"] i)[/COLOR]


Liste.SubItems(1) = Cells(i, 1).Value
Liste.SubItems(2) = Cells(i, 2).Value 'Üçüncü sütuna 3. sütun
Liste.SubItems(3) = Cells(i, 3).Value
Liste.SubItems(4) = Cells(i, 4).Value
Liste.SubItems(5) = Cells(i, 5).Value
Liste.SubItems(6) = Cells(i, 6).Value
Liste.SubItems(7) = Cells(i, 7).Value
Liste.SubItems(8) = Cells(i, 8).Value
Liste.SubItems(9) = Cells(i, 9).Value
Liste.SubItems(10) = Cells(i, 10).Value
Liste.SubItems(11) = Cells(i, 11).Value

Next i
Set Liste = Nothing

End Sub


Kod:
Private Sub ListView1_DblClick()
'On Error Resume Next

x = ListView1.SelectedItem.Index

ComboBox3.Text = ListView1.ListItems(x).ListSubItems(4)
TextBox3.Text = ListView1.ListItems(x).ListSubItems(3)
TextBox6.Text = ListView1.ListItems(x).ListSubItems(6)
TextBox7.Text = ListView1.ListItems(x).ListSubItems(7)
TextBox8.Text = ListView1.ListItems(x).ListSubItems(8)
TextBox9.Text = ListView1.ListItems(x).ListSubItems(9)
TextBox2.Text = ListView1.ListItems(x).ListSubItems(2)
TextBox5.Text = ListView1.ListItems(x).ListSubItems(5)
TextBox11.Text = ListView1.ListItems(x).ListSubItems(11)
TextBox10.Text = ListView1.ListItems(x).ListSubItems(10)
ComboBox2.Text = ListView1.ListItems(x).ListSubItems(1)

End Sub

Kod:
Private Sub CommandButton4_Click()

Dim sonsat As Integer

If ComboBox3.Value = "" Then
MsgBox "Lütfen Restoran Seçiniz.", vbExclamation
ComboBox3.SetFocus
Exit Sub
End If
If TextBox3.Value = "" Then
MsgBox "Please enter an Adress.", vbExclamation
TextBox3.SetFocus
Exit Sub
End If

'Me.TextBox10 = CSng((CDate(Me.TextBox8.Text + " " + Me.TextBox9.Text) - CDate(Me.TextBox6.Text + " " + Me.TextBox7.Text)) * 24) * 60
'TextBox10.Value = Format((TextBox10.Text / 24) / 60, "hh:mm:ss")

[COLOR="Red"]sonsat = ListView1.ListItems(ListView1.SelectedItem.Index)[/COLOR]

MsgBox sonsat
Cells(sonsat, 1) = ComboBox2.Text
Cells(sonsat, 2) = TextBox2.Text
Cells(sonsat, 3) = TextBox3.Text
Cells(sonsat, 4) = ComboBox3.Text
Cells(sonsat, 5) = TextBox5.Text
Cells(sonsat, 6) = TextBox6.Text
Cells(sonsat, 7) = TextBox7.Text
Cells(sonsat, 8) = TextBox8.Text
Cells(sonsat, 9) = TextBox9.Text
Cells(sonsat, 10) = TextBox10.Text
Cells(sonsat, 11) = TextBox11.Text
MsgBox "Kayıt Başarılı"
Call UserForm_Initialize

End Sub

bu şekilde bende çalıştı
 
Evet kırmızı yerlere dikkat ederek kodları düzenleyince çalıştı. Teşekkür ederim. Sadece sıra noyu listview1 üzerinde gizleme şansım var mı acaba?
 
Kod:
.ColumnHeaders.Add , , "sıra no ", [COLOR="red"]30[/COLOR]

yukarıdaki bölümdeki kırmızı yeri sıfır yaparsanız herhalde iş görürü

Kod:
.ColumnHeaders.Add , , "sıra no ", [COLOR="Red"]0[/COLOR]
 
Geri
Üst