Ülke Şehir Eşleşmesini Açılır Liste İle Yapmak

Katılım
11 Ağustos 2005
Mesajlar
26
Ülke Þehir Eşleşmesini Açılır Liste Ýle Yapmak

Merhaba Arkadaşlar;
Aşağıda gönderdiğim dosyanın sayfa2'sinde göreceğiniz gibi bir ülke şehir veri tabanı oluşturdum. Bunu sayfa1'de açılır liste olarak kullanmak istiyorum. Ã?rneğin ülke yazan yerde ülkeyi açılır listeden çekince o ülkeye ait şehirleri de yan hücreden seçebilmeliyim. Tıpkı kimlik no öğrenme sayfasındaki veya normal bir üyelik formu oluştururken ki gibi. bunu nasıl yapabilirim acaba?
yardımlarınız için şimdiden teşekkürler.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki kodu sayfa1 in kod sayfasına kopyalayın. Ã?ncelikle Sayfa1'in A4 hücresinde doğrulama ile ülke isimlerini içeren bir açılır liste oluşturun. Bu listeden seçilen ülkeye göre Sayfa1'in B4 hücresinde yine doğrulama ile seçilen ülkeye ait şehir isimlerinin bulunduğu bir açılır liste otomatikman oluşturulacaktır. Daha iyi anlaşılması için ekte birde dosya sunuyorum.

[vb:1:89da4ad11a]Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$4" Then Exit Sub
On Error Resume Next
Set s1 = Sheets("sayfa2")
ilksat = [sayfa2!a1:a65536].Find([a4].Value).Row
If ilksat = 2 Then ilksat = 1
sonsat = WorksheetFunction.CountIf([sayfa2!a:a], [a4].Value) + ilksat - 1
adr = "R" & ilksat & "C2:" & "R" & sonsat & "C2"
ActiveWorkbook.Names.Add Name:="ad", RefersToR1C1:="=Sayfa2!" & adr
[b4].Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, Formula1:="=ad"
End With
End Sub
[/vb:1:89da4ad11a]
 
Katılım
11 Ağustos 2005
Mesajlar
26
bu kodun işleyişini de anlatabilir misiniz? çünkü belki ben bu satırlara yeni veri ekleyeceğim böylece daha fazla veri alacağım, 3-4 satırlı değişkenler oalcak. belki bu kodla olmayacak ama en azından yöntem öğrenmiş oalcağım. teşekkürler.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Kodun satırlarının yanına işlevlerini yazdım.

[vb:1:90baf20d5d]Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$4" Then Exit Sub 'sadece A4 hücresi değişince kodu çalıştırır.
On Error Resume Next
Set s1 = Sheets("sayfa2")
ilksat = [sayfa2!a1:a65536].Find([a4].Value).Row 'Ülke isminin bulunduğu ilk satırı bulur.
If ilksat = 2 Then ilksat = 1
sonsat = WorksheetFunction.CountIf([sayfa2!a:a], [a4].Value) + ilksat - 1 'ülke isminin bulunduğu son satırı bulur.
adr = "R" & ilksat & "C2:" & "R" & sonsat & "C2"
ActiveWorkbook.Names.Add Name:="ad", RefersToR1C1:="=Sayfa2!" & adr 'buluna ilk ve son satır arasındaki aralığa (range) ad ismini verir.
[b4].Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, Formula1:="=ad" 'seçilen B4 hücresine doğrulama yöntemi ad isminin verildiği liste eklenir.
End With
End Sub
[/vb:1:90baf20d5d]
 
Üst