For y=1 to 9 yerine sutun isimleri belirlemek

Katılım
27 Şubat 2008
Mesajlar
307
Excel Vers. ve Dili
Office 2016
Sub detay()
Sheets("KİŞİ").Range("A2:I100000").Value = ""
Dim x As Long
Dim y As Long
Dim ks As Integer
ks = 1
For x = 1 To 100000
If Sheets("İZİNLER").Range("A" & x).Value = "" Then Exit For
If Sheets("İZİNLER").Range("a" & x).Value = TextBox1.Text Then
ks = ks + 1
For y = 1 To 9
Sheets("KİŞİ").Cells(ks, y).Value = Sheets("İZİNLER").Cells(x, y).Value
Next y
End If
Next x
ListBox2.ColumnCount = 9
ListBox2.RowSource = "KİŞİ!A1:I" & ks
End Sub

şeklinde kodum var
For y = 1 To 9
yerine ben A, C, D ve I sutunlarını seçmek için nasıl bir değişiklik yapabilirim.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,712
Excel Vers. ve Dili
Excel 2019 Türkçe
Bu şekilde dener misiniz ?
Kod:
Sub detay()
    Sheets("KİŞİ").Range("A2:I100000").Value = ""
    Dim x As Long
    Dim y As Long
    Dim ks As Integer
    ks = 1
    For x = 1 To 100000
    If Sheets("İZİNLER").Range("A" & x).Value = "" Then Exit For
    If Sheets("İZİNLER").Range("a" & x).Value = TextBox1.Text Then
    ks = ks + 1
    For y = 1 To 9
    If y = 2 Then GoTo 10
    If y = 5 Then GoTo 10
    If y = 6 Then GoTo 10
    If y = 7 Then GoTo 10
    If y = 8 Then GoTo 10
    Sheets("KİŞİ").Cells(ks, y).Value = Sheets("İZİNLER").Cells(x, y).Value
10
    Next y
    End If
    Next x
    ListBox2.ColumnCount = 9
    ListBox2.RowSource = "KİŞİ!A1:I" & ks
End Sub
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,712
Excel Vers. ve Dili
Excel 2019 Türkçe
Farklı bir örnek daha yaptım. Bunu da deneyebilir misiniz ?
Kod:
Sub detay()
    Sheets("KİŞİ").Range("A2:I100000").Value = ""
    Dim x As Long
    Dim y As Long
    Dim ks As Integer
    Dim arr
    ks = 1
    For x = 1 To 100000
    If Sheets("İZİNLER").Range("A" & x).Value = "" Then Exit For
    If Sheets("İZİNLER").Range("a" & x).Value = TextBox1.Text Then
    ks = ks + 1
    arr = Array(1, 3, 4, 9)
    For y = 0 To UBound(arr)
    Sheets("KİŞİ").Cells(ks, arr(y)).Value = Sheets("İZİNLER").Cells(x, arr(y)).Value
10
    Next y
    End If
    Next x
    ListBox2.ColumnCount = 9
    ListBox2.RowSource = "KİŞİ!A1:I" & ks
End Sub
 
Katılım
27 Şubat 2008
Mesajlar
307
Excel Vers. ve Dili
Office 2016
B
Sub detay()
Sheets("KİŞİ").Range("A2:I100000").Value = ""
Dim x As Long
Dim y As Long
Dim ks As Integer
ks = 1
For x = 1 To 100000
If Sheets("İZİNLER").Range("A" & x).Value = "" Then Exit For
If Sheets("İZİNLER").Range("a" & x).Value = TextBox1.Text Then
ks = ks + 1
For y = 1 To 9
Sheets("KİŞİ").Cells(ks, y).Value = Sheets("İZİNLER").Cells(x, y).Value
Next y
End If
Next x
ListBox2.ColumnCount = 9
ListBox2.RowSource = "KİŞİ!A1:I" & ks
End Sub

şeklinde kodum var
For y = 1 To 9
yerine ben A, C, D ve I sutunlarını seçmek için nasıl bir değişiklik yapabilirim.
Bu kodla izinler sayfasındaki arama işlemini yukardan aşağıya yapıyor. Yani en son işlem en sonda gösteriyor. Ben Arama işlemini aşağıdan yukarıya yapabilirmiyim. En son işlemi Listbox ta ilk sırada görmek istiyorum.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Aşağıdaki kodu deneyin.
Array(9, 4, 3, 1) kısmı kolon sıra numarasını temsil ediyor.

I=9, D=4, C=3, A=1
Başka kolon eklemek isterseniz buna göre ekleyebilirsiniz.

Kod:
Sub Test()
    Dim x As Long
    Dim y As Long
    Dim ks As Integer
    Dim Kolon As Variant
    Dim SatirSay As Integer
    SatirSay = Sheets("İZİNLER").Cells(Rows.Count, "A").End(xlUp).Row
    Kolon = Array(1, 3, 4, 9)
    Sheets("KİŞİ").Range("A2:I" & SatirSay).Value = ""
    ks = 1
    For x = SatirSay To 1 Step -1
        If Sheets("İZİNLER").Range("A" & x).Value = "" Then Exit For
            If Sheets("İZİNLER").Range("a" & x).Value = TextBox1.Text Then
            ks = ks + 1
            For y = 1 To UBound(Kolon)
                Sheets("KİŞİ").Cells(ks, Kolon(y - 1)).Value = Sheets("İZİNLER").Cells(x, y).Value
            Next y
        End If
    Next x
    ListBox2.ColumnCount = 9
    ListBox2.RowSource = "KİŞİ!A1:I" & ks
End Sub
 
Üst