[ÇÖZÜLDÜ] Listwievde seçili satır ve alt öğelerini kolleksiyona alma

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kod:
Private Sub Lvw_AdSoyad_guncelle()
    Dim wsPers As Worksheet
    Dim i%
    Dim x
    Set wsPers = ThisWorkbook.Sheets("PRS")
        With Lvw_AdSoyad
            .ListItems.Clear
            For i = 2 To wsPers.Cells(65536, 1).End(xlUp).Row - 1
                If wsPers.Cells(2, 1) <> "" Then
                    .ListItems.Add , , wsPers.Cells(i, 1)
                    With .ListItems(.ListItems.Count)
                        .SubItems(1) = wsPers.Cells(i, 2)
                        .SubItems(2) = wsPers.Cells(i, 3)
                        .SubItems(3) = wsPers.Cells(i, 4)
                    End With
                End If
            Next i
        End With
    Set wsPers = Nothing
End Sub
Yukar&#305;daki kodlar ile doldurmu&#351; oldu&#287;umuz listwiev nesnemizin, se&#231;ili sat&#305;r ve alt &#246;&#287;lerini koleksiyona nas&#305;l alabilirim. a&#351;a&#287;&#305;daki kodlar sadece kendisini al&#305;yor.

Kod:
Private Sub CommandButton1_Click()                                                                      '##'
1    Dim col As New Collection                                                                               '##'
'*\ Lvw_AdSoyadde Se&#231;ili olanlar&#305; koleksiyona al ve say&#305;s&#305;n&#305; tesbit et...                                 '##'
2 With Lvw_AdSoyad                                                                                          '##'
3    For i = 1 To .ListItems.Count                                                                       '##'
4        If .ListItems(i).Checked Then
[B][COLOR=green]           col.Add .ListItems(i).Text[/COLOR][/B]                                         '##'
[COLOR=red][B]           'col.Add??? = .SubItems(i, 1).Text      '&#231;ek i&#351;aretli sat&#305;r&#305;n 1.alt &#246;&#287;esi                                    '##'[/B][/COLOR]
[B][COLOR=red]           'col.Add??? = .SubItems(i, 2).Text       '&#231;ek i&#351;aretli sat&#305;r&#305;n 2.alt &#246;&#287;esi                                                                    '##'[/COLOR][/B]
[COLOR=red][B]           'col.Add??? = .SubItems(i, 2).Text       '&#231;ek i&#351;aretli sat&#305;r&#305;n 3.alt &#246;&#287;esi[/B][/COLOR]                                                                     
        End If
5    Next i                                                                                              '##'
''*\ ... E&#287;er i&#351;aretli olan sat&#305;r yoksa prosod&#252;rden &#231;&#305;k, ...                                               '##'
6        If col.Count = 0 Then                                                                           '##'
7            MsgBox "Se&#231;ili veri bulunamad&#305;"                                                             '##'
8        Else                                                                                            '##'
9            Soru = CmbYazici.Value & " Yaz&#305;c&#305;s&#305;ndan " & col.Count & " adet &#231;al&#305;&#351;ma sayfas&#305;ndan " & _
                   TextBox1.Value & " -er/-ar adet  Yazd&#305;rmak &#304;stiyor musunuz?"                         '##'
10            If MsgBox(Soru, vbYesNo) = vbYes Then                                                       '##'
''*\ ... Listbox1 de se&#231;ili sayfalar&#305; CmbYazici deki yaz&#305;c&#305;dan textbox1 deki kadar yazd&#305;r.               '##'
11                For i = 1 To col.Count                                                                  '##'
                    MsgBox col.Item(i) 'koleksiyona al&#305;nan ilk veri (se&#231;ili as&#305;l &#246;&#287;e)
[COLOR=red][B]'                    MsgBox col.Item???1 'koleksiyona al&#305;nan i. veri (se&#231;ili 1.alt &#246;&#287;e)[/B][/COLOR]
[COLOR=red][B]'                    MsgBox col.Item???2 'koleksiyona al&#305;nan i. veri (se&#231;ili 2.alt &#246;&#287;e)[/B][/COLOR]
[COLOR=red][B]'                    MsgBox col.Item???3 'koleksiyona al&#305;nan i. veri (se&#231;ili 3.alt &#246;&#287;e)[/B][/COLOR]
'12                     Sheets(col.Item(i)).PrintOut _
'                    Copies:=TextBox1.Value, ActivePrinter:=CmbYazici.Value                              '##'
13                Next i                                                                                  '##'
14            End If                                                                                      '##'
15        End If                                                                                          '##'
16    End With    'Lvw_AdSoyad                                                                              '##'
17 Set col = Nothing                                                                                      '##'
'18 Unload Me                                                                                              '##'
End Sub
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
ben bir &#351;ekilde halletim sn. hocalar&#305;m (daha kolay&#305;ona hay&#305;r demem)

Kod:
'#########################################################################################################'
'#########################################################################################################'
'#########         Raporla_ADOBB mod&#252;l&#252; ile olu&#351;an Personel isimli &#231;al&#305;&#351;ma sayfas&#305;ndan           #########'
'#########         [Personelin Ad&#305; Soyad&#305;,   Mali Y&#305;l,    Gider T&#252;r&#252;,  Masraf Mrkz]              #########'
'#########         ba&#351;l&#305;klar&#305;n&#305; Lvw_AdSoyad nesnesine alarak se&#231;ilen personeli, cmbYazici        #########'
'#########         nesnesindeki combodan textbox1 adet kadar yazd&#305;r&#305;r...                         #########'
'#########         [URL="http://www.excel.web.tr/hsayar"]www.excel.web.tr/hsayar[/URL] 29/08/2008-12:30.                                     #########'
'#########         a&#231;&#305;l&#305;&#351;ta se&#231;iliyor.                                                           #########'
'#########################################################################################################'
'#########################################################################################################'
Private i As Single
Private Sub UserForm_Activate()                                                                        '##'
'UserformlardaEkOzellik prosod&#252;r&#252; hsr.xla dan &#231;al&#305;&#351;maktad&#305;r.
1 Call KlsrDgr                                                                                         '##'
2 Dim dsyIco$:  dsyIco = klsrAddIns & AppPthSept & "Hsr_ico" & AppPthSept & "Print8.ico"   'icon yolu  '##'
3 Call UserformlardaEkOzellik(Me, False, True, True, True, False, True, False, False, True, True _
                              , dsyIco)                                                                '##'
End Sub                                                                                                '##'
'######################################################################################################////
Kod:
Private Sub UserForm_Initialize()                                                                      '##'
'*\ Form denetimlerininin &#246;zelliklerini belirle                                                        '##'
    CommandButton2.Cancel = True                 'Userform &#252;zerinde "ESC" ye bas&#305;nca &#231;&#305;k&#305;&#351;a izin ver.  '##'
    TextBox1 = 1:                       Cbx_AdSoyad.Caption = "T&#252;m  Sayfalar&#305;  Se&#231;"                      '##'
    With Lvw_AdSoyad                                                                                     '##'
        .View = lvwReport:              .LabelEdit = lvwManual                                         '##'
        .CheckBoxes = True                                          'Her elemana CheckBox olu&#351;turur.   '##'
        .ColumnHeaders.Clear:           .ListItems.Clear              'ba&#351;l&#305;klar&#305; ve &#246;&#287;eleri temizle   '##'
        .ColumnHeaders.Add , , "Ad&#305; Soyad&#305;", 142                    'ba&#351;l&#305;k ve geni&#351;liklerini ayarla     '##'
        .ColumnHeaders.Add , , "Malyt Y&#305;l&#305;", 50, lvwColumnRight
        .ColumnHeaders.Add , , "Gider T&#252;r&#252;", 100
        .ColumnHeaders.Add , , "Masraf Merkezi", 100
    End With   'Lvw_AdSoyad                                                                              '##'
'*\ De&#287;i&#351;ken tan&#305;mlama ve set etme                                                                     '##'
    Dim Wsh As WshNetwork:          Set Wsh = New WshNetwork                                           '##'
'**\ Aktif Bilgisayardaki Yaz&#305;c&#305; Listesini CmbYazici e al&#305;r                                            '##'
    With CmbYazici                                                                                     '##'
        For i = 1 To Wsh.EnumPrinterConnections.Count - 1 Step 2                                       '##'
            .AddItem Wsh.EnumPrinterConnections(i)                                                     '##'
        Next                                                                                           '##'
'**\ Varsay&#305;lan yaz&#305;c&#305;y&#305; Combo1e atar                                                                  '##'
        .Value = FncHsr_VarsayilanYazici()                                                             '##'
    End With 'CmbYazici                                                                                '##'
'**\ Data sayfas&#305;n&#305;n f5:f65536 aral&#305;&#287;&#305;ndaki benzersiz kay&#305;tlar&#305; cmb_bYIL sayfas&#305;an getir.
Call Lvw_AdSoyad_guncelle                                                                                            '##'
'*\ De&#287;i&#351;kenleri ve de&#287;erlerini haf&#305;zadan silme                                                        '##'
Set Wsh = Nothing:                  i = 0                                                              '##'
End Sub                                                                                                '##'
Kod:
Private Sub Lvw_AdSoyad_guncelle()
    Dim wsPers As Worksheet
    Dim i&#37;
    Dim x
    Set wsPers = ThisWorkbook.Sheets("PRS")
        With Lvw_AdSoyad
            .ListItems.Clear
            For i = 2 To wsPers.Cells(65536, 1).End(xlUp).Row - 1
                If wsPers.Cells(2, 1) <> "" Then
[COLOR=green][B]                    .ListItems.Add , , wsPers.Cells(i, 1)[/B][/COLOR]
[COLOR=green][B]                    With .ListItems(.ListItems.Count)[/B][/COLOR]
[COLOR=green][B]                        .SubItems(1) = wsPers.Cells(i, 2)[/B][/COLOR]
[COLOR=green][B]                        .SubItems(2) = wsPers.Cells(i, 3)[/B][/COLOR]
[COLOR=green][B]                        .SubItems(3) = wsPers.Cells(i, 4)[/B][/COLOR]
[COLOR=green][B]                    End With[/B][/COLOR]
                End If
            Next i
        End With
    Set wsPers = Nothing
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)                               '##'
    'Call UserForm_EnterKapa2                                                                           '##'
End Sub                                                                                                '##'
'######################################################################################################////
Kod:
Private Sub CommandButton1_Click()                                                                     '##'
1    Dim col As New Collection                                                                         '##'
2    Dim wsData As Worksheet:              Set wsData = ThisWorkbook.Sheets("DATA")                    '##'
3    Dim RngVeriSuz As Range                                                                           '##'
4    With wsData                                                                                       '##'
5       SonSat = .Cells(65536, 2).End(3).Row                                                           '##'
6        Set RngVeriSuz = .Range("B4:P" & SonSat)                                                      '##'
7    End With                                                                                          '##'
'*\ Lvw_AdSoyadde Se&#231;ili olanlar&#305; koleksiyona al ve say&#305;s&#305;n&#305; tesbit et...                              '##'
8       With Lvw_AdSoyad                                                                               '##'
9           For i = 1 To .ListItems.Count                                                              '##'
10               With .ListItems(i)                                                                    '##'
11                    If .Checked Then                                                                 '##'
12                       col.Add .Text                                                                 '##'
[COLOR=darkgreen][B]13                        col.Add .SubItems(1)                                                         '##'[/B][/COLOR]
[COLOR=darkgreen][B]14                        col.Add .SubItems(2)                                                         '##'[/B][/COLOR]
[COLOR=darkgreen][B]15                        col.Add .SubItems(3)[/B][/COLOR]                                                         '##'
16                    End If                                                                           '##'
17                End With                                                                             '##'
18           Next i                                                                                    '##'
''*\ ... E&#287;er se&#231;ili olan sayfa yoksa prosod&#252;rden &#231;&#305;k, ...                                             '##'
19        If col.Count = 0 Then                                                                        '##'
20            MsgBox "Se&#231;ili veri bulunamad&#305;"                                                          '##'
21       Else                                                                                          '##'
22           Soru = CmbYazici.Value & " Yaz&#305;c&#305;s&#305;ndan " & col.Count / 4 & " adet personel analiz sayfas&#305;n&#305; " & _
                  TextBox1.Value & " -er/-ar adet  Yazd&#305;rmak &#304;stiyor musunuz?"                         '##'
23            If MsgBox(Soru, vbYesNo) = vbYes Then                                                    '##'
''*\ ... Listbox1 de se&#231;ili sayfalar&#305; CmbYazici deki yaz&#305;c&#305;dan textbox1 deki kadar yazd&#305;r.             '##'
24              For i = 1 To col.Count [COLOR=darkgreen][B]Step 4[/B][/COLOR]                                                          '##'
[COLOR=darkgreen][B]25                    RngVeriSuz.AutoFilter Field:=2, Criteria1:=col.Item(i + 0)                       '##'[/B][/COLOR]
[COLOR=darkgreen][B]26                    RngVeriSuz.AutoFilter Field:=6, Criteria1:=col.Item(i + 1)                       '##'[/B][/COLOR]
[COLOR=darkgreen][B]27                    RngVeriSuz.AutoFilter Field:=7, Criteria1:=col.Item(i + 2)                       '##'[/B][/COLOR]
[COLOR=darkgreen][B]28                    RngVeriSuz.AutoFilter Field:=8, Criteria1:=col.Item(i + 3)                       '##'[/B][/COLOR]
29                    wsData.PrintOut Copies:=TextBox1.Value, ActivePrinter:=CmbYazici.Value           '##'
30               Next i                                                                                '##'
31            End If                                                                                   '##'
32        End If                                                                                       '##'
33    End With    'Lvw_AdSoyad                                                                         '##'
34 Set col = Nothing: Set RngVeriSuz = Nothing                                                         '##'
35 Unload Me                                                                                           '##'
End Sub
 
Üst