• DİKKAT

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

Data Validation ile oluşturulan Dropdown Hak.

Katılım
5 Temmuz 2013
Mesajlar
22
Excel Vers. ve Dili
Excel Office 2016 English
merhaba,

excel'de şöyle bir macro yazdım:

data validation ile oluşturduğumuz bir drop-down menü var. bu menüdeki verilerden birine tıkladığımızda sayfadaki tablolarda yer alan veriler değişiyor. daha sonra ben bu tablonun çıktısını yazdığım macro ile pdf olarak alabiliyorum. fakat her seferinde tek tek dropdown'u açıp başka bir veriyi seçmem gerekiyor.

isteğim, macro otomatik olarak dropdown menüdeki bütün seçenekleri teker teker seçsin ve pdflerini alsın.

sorum, dropdowndaki verileri sırayla seçmesini nasıl sağlayabilirim? en azından dropdown'daki veriyi seçme komutu nedir?

(muhtemelen bir for döngüsü kullanılacak diye tahmin ediyorum.)

kullandığım kod:
Kod:
sub kod_pdf()

dim sh as worksheet
set sh = worksheets("gerçek")

yol = "c:\users\aa\desktop\kasım\" & [n5]

isim = sh.range("c7").value
sh.select
sh.range("a1:j41").select
selection.exportasfixedformat type:=xltypepdf, filename:=yol _
& "\" & [n5] & " - " & [c7] & " - " & [n8] & " - " & " gerçek_2016" & ".pdf", quality:=xlqualitystandard, _
ıncludedocproperties:=true, ıgnoreprintareas:=false, _
openafterpublish:=false

end sub

data validation'lı dropdown menü (aslında dropdown sayılmaz hücre içine gömülü çünkü, artık adına ne dersiniz :) ) c7'de..
 
Dosya ekleyemiyorum ne yazık ki risk teşkil ettiğinden. İnanın bana yoksa en başta eklerdim.

Fakat, konu ile ilgili olabilecek bütün kodu ve bilgileri verdiğimi düşünüyorum. Şimdiden teşekkür ederim iyi niyetiniz ve yardımlarınız için.
 
Data validation buna verileri nerden aldığınızı belirtmemişsiniz ?
Örnek Dosya derken sizin dosyanızı değil içerisine sanal veri girişi yapmış olduğunuz dosyanızın bir benzerini göndermenizi istemiştim.
Ancak bu şekilde yardım edilebilir diye düşünüyorum.
Kolay Gelsin.
 
Data Validation'daki verileri başka bir sheetten alıyorum. O sheette de 3 sütun 100 satır var.
 
Bence, oluşturulacak FOR...NEXT döngüsü için;
veri doğrulama uygulanan hücre adresi ve veri doğrulama liste kaynağı bilinmelidir.

Veri doğrulama liste kaynağı olarak, tanımlanmış bir ALAN ADI kullanıyorsanız bu ALAN ADIna ait formül metnini belirtmelisiniz.
.
 
. . .

Birinci kod ile A1 hücresinde veri doğrulama oluşturalım... Ellede yapabilirsiniz...

Kod:
Sub Makro1()
    With Range("A1").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="ali,veli,deneme,vs. vs."
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
End Sub


Bu kodlar ilede seçili hücre veya belirli bir hücre adresindeki seçenekleri saydırabiliriz.

Kod:
Sub KOD()

    metin = Selection.Validation.Formula1
    aranan1 = ";"
    aranan2 = "="

    b = Split(metin, aranan1)
    c = Split(metin, aranan2)

    If UBound(b) = 0 Then GoTo cye
    For i = 0 To UBound(b)
        MsgBox Split(metin, aranan)(i)
    Next i
    Exit Sub

cye:
    If UBound(c) = 0 Then Exit Sub
    For Each alan In Range(metin)
        MsgBox alan
    Next

End Sub

. . .
 
Son düzenleme:
Tekrardan Merhaba,

Örnek dosyayı aşağıdaki linkten bulabilirsiniz. Yapmak istediğim; Excel'in içindeki PDF oluşturma macrosuna da bir tuş atadım ve bir kere tuşa basarak dropdown menüsündeki bütün veriler için ayrı ayrı pdfler oluşturmasını istiyorum.

http://dosya.co/ohynwemawco1/Test.xlsm.html


Teşekkür ederim.
 
Sheet1'deki tüm listeyi PDF yapmak istiyorsanız aşağıdaki kodu kullanabilirsiniz. Kırmızı kodlar sizin, bu kodları deneme imkanım olmadı
Kod:
Sub KOD_PDF()
Dim sh2 As Worksheet
Set sh2 = Worksheets("Sheet2")
Dim sh1 As Worksheet
Set sh1 = Worksheets("Sheet1")

For i = 2 To sh1.Range("A65536").End(3).Row
sh2.Range("B3").Value = sh1.Range("A" & i)
sh2.Range("b5").Value = sh1.Range("b" & i)
sh2.Range("b6").Value = sh1.Range("c" & i)
sh2.Range("A5").Value = "ad:"
sh2.Range("A6").Value = "şehir:"

[COLOR="Red"]yol = "C:\"

sh.Select
sh1.Range("A1:C7").Select
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol _
& [D4] & " - " & [B5] & " - " & [B6] & " - " & " Deneme_2016" & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
[/COLOR]Next
End Sub
 
. . .

1-2-3 diyemi PDF oluşturmak istiyorsunuz yoksa isimlere göre mi...

. . .
 
PDF isimlerini ben ayarlıyorum yazdığım kodda. "1 - Ahmet - Zonguldak.pdf" yapabiliyorum, onu kodda yazdım.
. . .

Kod:
Sub KOD_PDF()
    
    Dim sh As Worksheet
    Set sh = Worksheets("Sheet2")
    yol = "C:\"
    
    metin = Split(sh.Range("B3").Validation.Formula1, "!")(1)
    sayfa = Replace(Split(sh.Range("B3").Validation.Formula1, "!")(0), "=", "")
    
    For Each alan In Sheets(sayfa).Range(metin)
        sh.Range("B3") = alan
        sh.Select
        sh.Range("A1:C7").ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol _
        & [D4] & " - " & [B5] & " - " & [B6] & " - " & " Deneme_2016" & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    Next
    
End Sub

. . .
 
. . .

Kod:
Sub KOD_PDF()
    
    Dim sh As Worksheet
    Set sh = Worksheets("Sheet2")
    yol = "C:\"
    
    metin = Split(sh.Range("B3").Validation.Formula1, "!")(1)
    sayfa = Replace(Split(sh.Range("B3").Validation.Formula1, "!")(0), "=", "")
    
    For Each alan In Sheets(sayfa).Range(metin)
        sh.Range("B3") = alan
        sh.Select
        sh.Range("A1:C7").ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol _
        & [D4] & " - " & [B5] & " - " & [B6] & " - " & " Deneme_2016" & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    Next
    
End Sub

. . .

Teşekkür ederim 10 numara olmuş. Ellerinize sağlık.

Tek bir şey daha sormak istiyorum, kodda göremedim ama dropdowndaki verilerin 100 tane olması sıkıntı yaratır mı? ya da bir şey değiştirmemiz gerekir mi kodda ?
 
.

Kodlar veri doğrulamadaki hücre aralığana göre çalışır.

.
 
F8 ile adımlama yaparak hatanın olduğu satırı buldum sanırım:

sayfa = Replace(Split(sh.Range("F15").Validation.Formula1, "!")(0), "=", "")

F15'de Data Validationla oluşturulan Dropdown menü var.
 
. . .

Veri doğrulama kısmındaki tanımlamanız nedir.

Örneğinizde =Sheets1!a1:a5 di örneğin...

. . .
 
=X_Listesi

olarak yazmışım. Başka bir sheetteki verileri tanımlamışım. İsterseniz değiştirebilirim.
 
. . .

Değiştirmeniz gereken kısımları kırmızı ile belirttim.
Ad tanımlamasına göre güncelledim. Sayfa değişkenine gerek kalmadı.

Kod:
Sub KOD_PDF()
    
    Dim sh As Worksheet
    Set sh = Worksheets("Sayfa2")
    yol = "C:\"
    
    [COLOR="Red"]metin = Split(sh.Range("A1").Validation.Formula1, "=")(1)[/COLOR]
    
    For Each alan In [COLOR="Red"]Range(metin)[/COLOR]
        sh.Range("B3") = alan
        sh.Select
        sh.Range("A1:C7").ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol _
        & [D4] & " - " & [B5] & " - " & [B6] & " - " & " Deneme_2016" & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    Next
    
End Sub

. . .
 
. . .

Değiştirmeniz gereken kısımları kırmızı ile belirttim.
Ad tanımlamasına göre güncelledim. Sayfa değişkenine gerek kalmadı.

Kod:
Sub KOD_PDF()
    
    Dim sh As Worksheet
    Set sh = Worksheets("Sayfa2")
    yol = "C:\"
    
    [COLOR="Red"]metin = Split(sh.Range("A1").Validation.Formula1, "=")(1)[/COLOR]
    
    For Each alan In [COLOR="Red"]Range(metin)[/COLOR]
        sh.Range("B3") = alan
        sh.Select
        sh.Range("A1:C7").ExportAsFixedFormat Type:=xlTypePDF, Filename:=yol _
        & [D4] & " - " & [B5] & " - " & [B6] & " - " & " Deneme_2016" & ".pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    Next
    
End Sub

. . .

Hüseyin Bey, emekleriniz için çok teşekkürler fakat şimdide 400 hatası alıyorum. Data Validation'un bulunduğu kısmı X_KOD, Data Validation'un içindeki değerlerinin olduğu sütunuda X_KODList olarak değiştirdim. Fakat, yine de hata alıyorum.

Çok teşekkür ederim. Sanırım yüzdük yüzdük kuyruğuna geldik.

Edit: Hata bu satırdan kaynaklanıyor:

For Each alan In Range(metin)
 
Son düzenleme:
Geri
Üst