2 Değişkenden Fazla Listelemede Sorun

Katılım
11 Ağustos 2005
Mesajlar
26
Merhaba Arkadaşlar;
Bu forumda öğrendiklerimle bir uygulama yapmaya çalışıyorum. (Uygulama dosyası ektedir) Bu uygulamada yükleme için ülke seçildikten sonra (a4), o ülkenin şehirlerinin seçilmesini(b4), ardından o ülkenin sınır kapılarının seçilmesini (c4); boşlatma için ülke seçildikten sonra (d4); boşlatma için o ülkeden bir şehir seçilmesini (e4), ardından o ülkenin sınır kapılarının seçilmesini (f4) istiyorum. Ülke, şehir ve sınır kapıları diğer çalışma sayfalarından çekiliyor.
İlk aşamada yükleme ülkesini ve şehrini seçebilmeme rağmen, çıkış gümrüğü boş açılır liste halinde geliyor. Bu yüzden burada tıkandım. Ve boşlatma kısmına hiç geçmedim.
Bu işlemi yapmak için kullandığım kod, yine sizlerden öğrendiğim şu kod oldu:
Kod:
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
If Target.Address <> "$A$4" Then Exit Sub
On Error Resume Next
Set s1 = Sheets("sayfa3")
ilksat = [sayfa2!a1:a65536].Find([a4].Value).Row
If ilksat = 2 Then ilksat = 1
sonsat = WorksheetFunction.CountIf([sayfa3!a:a], [a4].Value) + ilksat - 1
adr = "R" & ilksat & "C2:" & "R" & sonsat & "C2"
ActiveWorkbook.Names.Add Name:="ad1", RefersToR1C1:="=Sayfa3!" & adr
[c4].Select
With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=ad1"
End With
End Sub
Sizce neden böyle bir problemle karşılaşıyorum. Ve bu uygulamayı gerçekleştirmek için bana nasıl bir öneride bulunursunuz? Þimdiden teşekkür ederim.
 

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
Koddaki hatalar aşağıda mavi renkle işaretlenerek düzeltilmiştir. Kodun ikinci bölümündeki ad tanımlamasında ad1 i kabul etmediğinden sorun vardı. İsimde rakam olmaması gerekiyor.

[vb:1:2c2df1e2b7]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
Set s1 = Sheets("sayfa3")
ilksat = [sayfa3!a1:a65536].Find([a4].Value).Row
If ilksat = 2 Then ilksat = 1
sonsat = WorksheetFunction.CountIf([sayfa3!a:a], [a4].Value) + ilksat - 1
adr = "R" & ilksat & "C2:" & "R" & sonsat & "C2"
ActiveWorkbook.Names.Add Name:="adc", RefersToR1C1:="=Sayfa3!" & adr
[c4].Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, Formula1:="=adc"
End With
End Sub

[/vb:1:2c2df1e2b7]
 
Katılım
11 Ağustos 2005
Mesajlar
26
Cevabınız için çok teşekkür ederim.Ã?zellikle ad listelerinin rakam değil harften oluşması bilgisi çok güzel bir püf nokta oldu benim için. Yükleme ile ilgili bölümde sorun olmuyor. Ama hemen yan hücrelerde bulunan boşaltma bölümünde sorun yaşıyorum. Boşlatma bölümü ise d4'ten seçilen ülkeye göre konumlandırılacak. Bunun için sayfanın genelinde şu kodu kullanıyorum:

Kod:
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
Set s1 = Sheets("sayfa3")
ilksat = [sayfa3!a1:a65536].Find([a4].Value).Row
If ilksat = 2 Then ilksat = 1
sonsat = WorksheetFunction.CountIf([sayfa3!a:a], [a4].Value) + ilksat - 1
adr = "R" & ilksat & "C2:" & "R" & sonsat & "C2"
ActiveWorkbook.Names.Add Name:="adc", RefersToR1C1:="=Sayfa3!" & adr
[c4].Select
With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=adc"
End With
Set s1 = Sheets("sayfa2")
ilksat = [sayfa2!a1:a65536].Find([d4].Value).Row
If ilksat = 2 Then ilksat = 1
sonsat = WorksheetFunction.CountIf([sayfa2!a:a], [d4].Value) + ilksat - 1
adr = "R" & ilksat & "C2:" & "R" & sonsat & "C2"
ActiveWorkbook.Names.Add Name:="add", RefersToR1C1:="=Sayfa2!" & adr
[e4].Select
With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=add"
End With
Set s1 = Sheets("sayfa3")
ilksat = [sayfa3!a1:a65536].Find([d4].Value).Row
If ilksat = 2 Then ilksat = 1
sonsat = WorksheetFunction.CountIf([sayfa3!a:a], [d4].Value) + ilksat - 1
adr = "R" & ilksat & "C2:" & "R" & sonsat & "C2"
ActiveWorkbook.Names.Add Name:="ade", RefersToR1C1:="=Sayfa3!" & adr
[f4].Select
With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=ade"
End With
End Sub
Bu sefer d4 hücresinden seçim yapmama rağmen e4 ve f4 hücrelerinde herhangi bir liste oluşmuyor. sanırsam iki kodu bağlamakta sorun yaşıyorum. bu kodların sadece 3 hücre kaymışını kullanmaya çalışıyorum. Sorun nedir sizce?
 

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
If Target.Address <> "$A$4" Then Exit Sub


Yukarıdaki satır kodun sadece A4 hücresindeki değişime göre çalışmasını sağlar. Bu referansı değiştirin. Birde kod içindeki Set s1=sheets(....) satırları gereksiz olmuş bunlarıda silebilirsiniz.
 
Katılım
11 Ağustos 2005
Mesajlar
26
mazur görün ama ben acemiyim bu konuda, acaba bu referansı nasıl değiştirebilirim?

edit:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
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
Set s1 = Sheets("sayfa3")
ilksat = [sayfa3!a1:a65536].Find([a4].Value).Row
If ilksat = 2 Then ilksat = 1
sonsat = WorksheetFunction.CountIf([sayfa3!a:a], [a4].Value) + ilksat - 1
adr = "R" & ilksat & "C2:" & "R" & sonsat & "C2"
ActiveWorkbook.Names.Add Name:="adc", RefersToR1C1:="=Sayfa3!" & adr
[c4].Select
With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=adc"
End With
ilksat = [sayfa2!a1:a65536].Find([d4].Value).Row
If ilksat = 2 Then ilksat = 1
sonsat = WorksheetFunction.CountIf([sayfa2!a:a], [d4].Value) + ilksat - 1
adr = "R" & ilksat & "C2:" & "R" & sonsat & "C2"
ActiveWorkbook.Names.Add Name:="add", RefersToR1C1:="=Sayfa2!" & adr
[e4].Select
With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=add"
End With
ilksat = [sayfa3!a1:a65536].Find([d4].Value).Row
If ilksat = 2 Then ilksat = 1
sonsat = WorksheetFunction.CountIf([sayfa3!a:a], [d4].Value) + ilksat - 1
adr = "R" & ilksat & "C2:" & "R" & sonsat & "C2"
ActiveWorkbook.Names.Add Name:="ade", RefersToR1C1:="=Sayfa3!" & adr
[f4].Select
With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, Formula1:="=ade"
End With
End Sub
Kodu bu şekilde yapınca çalıştı. çok teşekkür ederim.
 

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$4 yerine $D$4 yazın.
 
Üst