Veri doğrulama daha kısa bir kod

ikikan

Altın Üye
Katılım
3 Mart 2009
Mesajlar
519
Excel Vers. ve Dili
excel 2003 tr
Altın Üyelik Bitiş Tarihi
12.02.2026
Arkadaşlar kolay gelsin, bu kodun daha kısa olanı veya hızlı çalışanı varmıdır çok fazla veri olunca çok kasıyor, şimdiden teşekkürler..
For i = 11 To SonSatir
Set VeriD = Kitap.Cells(i, 7)

If VeriD = "SATIŞ" Then
With Kitap.Cells(i, 8)
.Validation.Delete
.Validation.Add _
Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, _
Formula1:="UYG,PRJ,TOB,CE,DGR"
End With
ElseIf VeriD = "TAHSİLAT" Or VeriD = "ALIŞ" Or VeriD = "ÖDEME" Then
With Kitap.Cells(i, 8)
.Validation.Delete
.Validation.Add _
Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, _
Formula1:="NKT,ÇEK,SNT,FFF,DGR"
End With
End If

If VeriD = "" Then
With Kitap.Cells(i, 8)
.Validation.Delete
.Value = ""
End With
End If
Next i
 

yanginci34

Altın Üye
Katılım
6 Temmuz 2010
Mesajlar
1,627
Excel Vers. ve Dili
excel2016
Altın Üyelik Bitiş Tarihi
12-10-2026
Merhaba; Örnek dosya eklerseniz iyi olacak. Dosyanın orjinali veye orjinaliyle uyumlu bir dosyayı eklerseniz daha kolay yardım edilecektir.
 

ikikan

Altın Üye
Katılım
3 Mart 2009
Mesajlar
519
Excel Vers. ve Dili
excel 2003 tr
Altın Üyelik Bitiş Tarihi
12.02.2026
İyi akşamlar Dosya ektedir
 

Ekli dosyalar

ikikan

Altın Üye
Katılım
3 Mart 2009
Mesajlar
519
Excel Vers. ve Dili
excel 2003 tr
Altın Üyelik Bitiş Tarihi
12.02.2026
İyi akşamlar Dosya ektedir
 

ikikan

Altın Üye
Katılım
3 Mart 2009
Mesajlar
519
Excel Vers. ve Dili
excel 2003 tr
Altın Üyelik Bitiş Tarihi
12.02.2026
Arkadaşlar acaba şu formüldeki liste1 ve liste2 deki bilgileri sayfadan değilde direk vba kod alanına MAKRO olurmu?

Kod:
=EĞER(A:A="SATIŞ";Liste1;Liste2)
 

ikikan

Altın Üye
Katılım
3 Mart 2009
Mesajlar
519
Excel Vers. ve Dili
excel 2003 tr
Altın Üyelik Bitiş Tarihi
12.02.2026
hızlı olan kod başka arkadaşlara yarar belki
Kod:
If Not Intersect(Target, Range("G11:H" & SonDoluS + 10)) Is Nothing Then
Set VeriD = Cells(Target.Row, 7)
    If VeriD = "SATIŞ" Then
        MyList(0) = "UYG,PRJ,TOB,CE,DGR"
    ElseIf VeriD = "TAHSİLAT" Or VeriD = "ALIŞ" Or VeriD = "ÖDEME" Then
        MyList(0) = "NKT,ÇEK,SNT,FFF,DGR"
    ElseIf VeriD = "" Then
        For i = 11 To SonSatir
            With Cells(i, 8)
                .Validation.Delete
                .Value = ""
            End With
        Next i
    End If
        With Cells(Target.Row, 8).Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
            Operator:=xlBetween, Formula1:=Join(MyList, ",")
        End With
        Else
End If
 

ikikan

Altın Üye
Katılım
3 Mart 2009
Mesajlar
519
Excel Vers. ve Dili
excel 2003 tr
Altın Üyelik Bitiş Tarihi
12.02.2026
Diger sitelerden bulduğum örnek kodlar
Kod:
Dim MyList(5) As String
MyList(0) = 1
MyList(1) = 2
MyList(2) = 3
MyList(3) = 4
MyList(4) = 5
MyList(5) = 6

With Range("A1").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
         Operator:=xlBetween, Formula1:=Join(MyList, ",")
End With

Kod:
Sub DV_Test()
    Dim ValidationList(5) As Variant, i As Integer

    For i = 0 To UBound(ValidationList)
        ValidationList(i) = i + 1
    Next

    With Range("A1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
            Operator:=xlEqual, Formula1:=Join(ValidationList, ",")
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub
 
Üst