Excel'de kolay veri girisi yapabilmek icin bir arayuz kullanmak istiyorum.
Amac 1.comboboxtan secilen veriye gore "otomatik olarak" 2.comboboxin iceriginin olusturulmasi.
1.comboboxtan ulke ismi secildiginde 2.comboboxta direk o ulkeye ait olan sehirler listelenmeli.
İf - else if dongusu ile bunu basarabiliyorum ancak kodlari azaltmak icin degisken kullanimi ile cozmek istiyorum.
Excel dosya yapisi ve veri giris mantigi su sekilde:
"Veriler" isimli sheet'te arayuzden gelen veriler tutulacak.
Bu sayfada 2 adet sutun olacak. Ilk sutun ulke isimlerinin kaydedilecegi sutun, 2.sutun ise sehir isimlerinin kaydedilecegi sutun.
"Listeler" isimli sheet'te ise ulke ve sehir isimlerine ait listeler bulunacak.
Ornegin "ULKELER" isimli listenin icinde ALMANYA, ITALYA vs bulunacak.
Sonra sirasiyla her ulkeye ait listeler ayri ayri sutunlarda olacak.
Ornegin "ALMANYA" isimli listenin icinde Frankfurt, Stuttgart, Munih, Hamburg, Koln vs olacak.
"ITALYA" isimli listenin icinde Roma, Floransa, Venedik, Cenova, Napoli vs olacak.
Asagida gorunen vb kodlarinda
CBOULKELER ulke isimlerinin yer aldigi comboboxtir.
CBOSEHIRLER sehir isimlerinin yer aldigi comboboxtir.
Ilk yazdigim kod sorunsuz bir sekilde calismakta ve istedigim sonucu vermektedir.
Ancak bu kodu if - else if dongusuyle olusturmamdan dolayi dunyadaki ulke sayilarinin coklugu dusunuldugunde asiri bir kod yazimi gerekecegi ortadadir.
Bu sebeple cizgi ile ayirdigim altta kalan kisimdaki gibi bir kod yazmaya calismaktayim.
Bu kodu parantezlerle, tirnaklarla oynayarak bircok hale soktum ama yine de calistiramadim.
Amacim CBOULKELER comboboxinda secilen degeri AAAAA isimli bir degiskene atamak ve CBOSEHIRLER comcoboxinin icerigini direk bu degiskene atanmis olan ulke ismi ile ayni isme sahip olan ornegin "ALMANYA" isimli sehir listesinden cagirmak.
Cok ugrastim ancak cozemedim. Yardimci olursaniz sevinirim.
Saygilarimla...
Private Sub CBOULKELER_Click()
Dim VSEHIR As Range
Dim ws As Worksheet
Set ws = Worksheets("Listeler")
If CBOULKELER.Text = "ALMANYA" Then
CBOSEHIRLER.Clear
For Each VSEHIR In ws.Range("ALMANYA")
With Me.CBOSEHIRLER
.AddItem VSEHIR.Value
.List(.ListCount - 1, 1) = VSEHIR.Offset(0, 1).Value
End With
Next VSEHIR
ElseIf CBOULKELER.Text = "ITALYA" Then
CBOSEHIRLER.Clear
For Each VSEHIR In ws.Range("ITALYA")
With Me.CBOSEHIRLER
.AddItem VSEHIR.Value
.List(.ListCount - 1, 1) = VSEHIR.Offset(0, 1).Value
End With
Next VSEHIR
End If
End Sub
-------------------------------------------------------------
Private Sub CBOULKELER_Click()
Dim VSEHIR As Range
Dim ws As Worksheet
Set ws = Worksheets("Listeler")
Dim AAAAA As Variant
AAAAA.Text = CBOULKELER.Text
For Each VSEHIR In ws.Range("AAAAA")
With Me.CBOSEHIRLER
.AddItem VSEHIR.Value
.List(.ListCount - 1, 1) = VSEHIR.Offset(0, 1).Value
End With
Next VSEHIR
End Sub
Amac 1.comboboxtan secilen veriye gore "otomatik olarak" 2.comboboxin iceriginin olusturulmasi.
1.comboboxtan ulke ismi secildiginde 2.comboboxta direk o ulkeye ait olan sehirler listelenmeli.
İf - else if dongusu ile bunu basarabiliyorum ancak kodlari azaltmak icin degisken kullanimi ile cozmek istiyorum.
Excel dosya yapisi ve veri giris mantigi su sekilde:
"Veriler" isimli sheet'te arayuzden gelen veriler tutulacak.
Bu sayfada 2 adet sutun olacak. Ilk sutun ulke isimlerinin kaydedilecegi sutun, 2.sutun ise sehir isimlerinin kaydedilecegi sutun.
"Listeler" isimli sheet'te ise ulke ve sehir isimlerine ait listeler bulunacak.
Ornegin "ULKELER" isimli listenin icinde ALMANYA, ITALYA vs bulunacak.
Sonra sirasiyla her ulkeye ait listeler ayri ayri sutunlarda olacak.
Ornegin "ALMANYA" isimli listenin icinde Frankfurt, Stuttgart, Munih, Hamburg, Koln vs olacak.
"ITALYA" isimli listenin icinde Roma, Floransa, Venedik, Cenova, Napoli vs olacak.
Asagida gorunen vb kodlarinda
CBOULKELER ulke isimlerinin yer aldigi comboboxtir.
CBOSEHIRLER sehir isimlerinin yer aldigi comboboxtir.
Ilk yazdigim kod sorunsuz bir sekilde calismakta ve istedigim sonucu vermektedir.
Ancak bu kodu if - else if dongusuyle olusturmamdan dolayi dunyadaki ulke sayilarinin coklugu dusunuldugunde asiri bir kod yazimi gerekecegi ortadadir.
Bu sebeple cizgi ile ayirdigim altta kalan kisimdaki gibi bir kod yazmaya calismaktayim.
Bu kodu parantezlerle, tirnaklarla oynayarak bircok hale soktum ama yine de calistiramadim.
Amacim CBOULKELER comboboxinda secilen degeri AAAAA isimli bir degiskene atamak ve CBOSEHIRLER comcoboxinin icerigini direk bu degiskene atanmis olan ulke ismi ile ayni isme sahip olan ornegin "ALMANYA" isimli sehir listesinden cagirmak.
Cok ugrastim ancak cozemedim. Yardimci olursaniz sevinirim.
Saygilarimla...
Private Sub CBOULKELER_Click()
Dim VSEHIR As Range
Dim ws As Worksheet
Set ws = Worksheets("Listeler")
If CBOULKELER.Text = "ALMANYA" Then
CBOSEHIRLER.Clear
For Each VSEHIR In ws.Range("ALMANYA")
With Me.CBOSEHIRLER
.AddItem VSEHIR.Value
.List(.ListCount - 1, 1) = VSEHIR.Offset(0, 1).Value
End With
Next VSEHIR
ElseIf CBOULKELER.Text = "ITALYA" Then
CBOSEHIRLER.Clear
For Each VSEHIR In ws.Range("ITALYA")
With Me.CBOSEHIRLER
.AddItem VSEHIR.Value
.List(.ListCount - 1, 1) = VSEHIR.Offset(0, 1).Value
End With
Next VSEHIR
End If
End Sub
-------------------------------------------------------------
Private Sub CBOULKELER_Click()
Dim VSEHIR As Range
Dim ws As Worksheet
Set ws = Worksheets("Listeler")
Dim AAAAA As Variant
AAAAA.Text = CBOULKELER.Text
For Each VSEHIR In ws.Range("AAAAA")
With Me.CBOSEHIRLER
.AddItem VSEHIR.Value
.List(.ListCount - 1, 1) = VSEHIR.Offset(0, 1).Value
End With
Next VSEHIR
End Sub