• DİKKAT

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

Veri doğrulama ksort ?

mersilen

Destek Ekibi
Destek Ekibi
Katılım
31 Aralık 2009
Mesajlar
1,105
Excel Vers. ve Dili
excel 2007 türkçe
Excel Vers. ve Dili Ofis 2003
Merhabalar,
Konuyu veri doğrulama konuları olarak açılan sorularda hücre içine harfler girildikçe, veri doğrulamanın buna göre filtre yaparak olanları getirmesi bahsi geçiyor.Bunu makro ile yapabilir miyiz?
Bu konuda 2 sorunla karşılaşıyorum.
1.Hücreye karakter girdikçe makronun çalışması sorunu (mesela a1 hücresine ab girince a1 hücresinde veri doğrulamanın çalışması)change ve selection change de olmuyor.
2.Diziyi oluşturunca dizi içeriğinin alfabetik sıralanması.(Bu PHP de ksort ile yapılıyor, vba dakini bulamadım)

Dizi makrosunu bu linkten takip ediyorum
http://alibal.blogcu.com/diziler-visual-basic/9312398


Tek boyutlu bir dizi içeriğini alfabetik sıralama örneği mevcut mu?Bİr dosya üzerinde gösterebilir miyiz?
örneğin

array(aab,1ab,abb,ada,2da)
sonra
array(1ab,2da,aab,abb,ada)
 

Ekli dosyalar

Son düzenleme:
Merhabalar
-- sadece veri doğrulama içinde filtrelenenlerin açılması kaldı (hücre içine girilen karaktere göre)
--ilginçtir benzersiz doğrulama listeside var.
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
sonsatır = 20
If Intersect(Target, Range("a1:a" & sonsatır)) Is Nothing Then Exit Sub
'--------------------------------------------------------
kat = Worksheets(ActiveSheet.Name).Cells(Rows.Count, "B").End(3).Row
ReDim deg(kat)
For k = 1 To kat
deg(k) = Worksheets(ActiveSheet.Name).Cells(k, "B").Value
Next k
'--------------------------------------------------------
myArray = deg
Dim unsorted As Boolean, L As Long, tmpMem

    unsorted = True
    Do While unsorted
        unsorted = False
        For L = LBound(myArray) To UBound(myArray) - 1
            If myArray(L) > myArray(L + 1) Then
                tmpMem = myArray(L)
                myArray(L) = myArray(L + 1)
                myArray(L + 1) = tmpMem
                unsorted = True
                Exit For
            End If
        Next
    Loop
    'TheSort = myArray
veri = ""
sat = Target.Row
sut = Target.Column
Cells(sat, sut).Validation.Delete
For i = 1 To kat
  If WorksheetFunction.CountIf(Range(Cells(1, sut), Cells(Rows.Count, sut)), myArray(i)) = 0 Then veri = veri & myArray(i) & ","
Next i
Cells(1, "D") = veri 'alfabetik sırasız
'Array.kSort(veri),
'ksort (veri)
Cells(4, "D") = veri 'alfabetik sıralı
Cells(5, "D") = deg 'alfabetik sıralı
'--------------------------------------------
If veri <> "" Then
Cells(sat, sut).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertWarning, Operator:=xlBetween, Formula1:=veri
Cells(sat, sut).Validation.ErrorTitle = "Mükerrer giriş"
Else
Cells(sat, sut).Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertWarning, Operator:=xlBetween, Formula1:=" "
Cells(sat, sut).Validation.InCellDropdown = False
Cells(sat, sut).Validation.InputTitle = "Dikkat"
Cells(sat, sut).Validation.InputMessage = "Listede veri kalmadı"
End If
End Sub

Sayın Halit Özdemir ve sayın Zeki Gürsoy 'un kodları birleştirilmiştir.
 

Ekli dosyalar

Geri
Üst