Değişken değerinin kod içinde kaybolmaması

Katılım
25 Ağustos 2004
Mesajlar
99
Sayın Forum Üyeleri,

Aşağıda kısaca; combobox1'e girilen değere göre "hst" sheet'inde 7 farklı sutundan uygun olan sutundaki tüm tarihlerle, girilen "gun1" değişkeninin farkını aldırmaya çalışmaktayım. Kodu çaliştırdığımda aşagıda kırmızı ile gösterilen satırda "Could not set the Value property. Tür uyuşmazlığı" hatasını almaktayım. Anlayabildiğim kadarıyla ilgili ilgili "Case"i seçip döngüyü tamamladıktan sonra "k " değişkeninin değerini "nothing"e çeviriyor. General Declaration 'da "k" değişkenini de tanımlamama rağmen, acaba bu döngüden çıktıktan sonra da "k" değişkeninin değerini hatırlamasını nasıl sağlarım ?

Yardımlarınıza şimdiden teşekkür ediyorum.

Saygılarımla.

NOT : Son "Case" olan "Case6"yı seçtiğimde kod hatasız çalışıyor.

Private Sub ComboBox1_Change()
Dim k As Range
Sheets("Sayfa3").Select
Range("B2:B8").Select
Selection.Find(What:=ComboBox1.Value, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
kart = ActiveCell.Offset(0, 1).Value
Label1.Caption = kart
gun1 = Calendar1.Value
hktarihi = ComboBox1.ListIndex
Select Case hktarihi
Case 0
ab = WorksheetFunction.CountA(Sheets("hst").Range("b3:b65532"))
sat = 2
For Each k In Sheets("hst").Range("b3:b" & ab)
sat = sat + 1
fark = k - gun1
If fark > 0 Then GoTo tarih
Next k
Case 1
ab = WorksheetFunction.CountA(Sheets("hst").Range("d3:d65532"))
sat = 2
For Each k In Sheets("hst").Range("d3:d" & ab)
sat = sat + 1
fark = k - gun1
If fark > 0 Then GoTo tarih
Next k
Case 2
ab = WorksheetFunction.CountA(Sheets("hst").Range("f3:f65532"))
sat = 2
For Each k In Sheets("hst").Range("f3:f" & ab)
sat = sat + 1
fark = k - gun1
If fark > 0 Then GoTo tarih
Next k
Case 3
ab = WorksheetFunction.CountA(Sheets("hst").Range("h3:h65532"))
sat = 2
For Each k In Sheets("hst").Range("h3:h" & ab)
sat = sat + 1
fark = k - gun1
If fark > 0 Then GoTo tarih
Next k
Case 4
ab = WorksheetFunction.CountA(Sheets("hst").Range("j3:j65532"))
sat = 2
For Each k In Sheets("hst").Range("j3:j" & ab)
sat = sat + 1
fark = k - gun1
If fark > 0 Then GoTo tarih
Next k
Case 5
ab = WorksheetFunction.CountA(Sheets("hst").Range("l3:l65532"))
sat = 2
For Each k In Sheets("hst").Range("l3:l" & ab)
sat = sat + 1
fark = k - gun1
If fark > 0 Then GoTo tarih
Next k
Case 6
ab = WorksheetFunction.CountA(Sheets("hst").Range("n3:n65532"))
sat = 2
For Each k In Sheets("hst").Range("n3:n" & ab)
sat = sat + 1
fark = k - gun1
If fark > 0 Then GoTo tarih
Next k
End Select
tarih:
TextBox9.Value = k
sut = Sheets("hst").Rows(1).Find(ComboBox1.Value).Column
TextBox7.Value = Sheets("hst").Cells(sat, sut + 1).Value
TextBox2.SetFocus
End Sub
 

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
Dim k As Range

Yukarıdaki satır ile k değişkenini bir range olarak tanımlamışsınız.

sonra gun1 değişkeninide gun1 = Calendar1.Value şeklinde tarih değeri atamışsınız.

fark = k - gun1 bu satırdada range ten tarihi çıkartmışsınız. Bence k değişkeninin tanımlaması hatalı.

1-Dim k As Range satırını kaldırarak deneyin.
2-Dim k As Date şeklinde deneyin.
 
Katılım
25 Ağustos 2004
Mesajlar
99
Sayın leventm,

Ã?ncelikle çok teşekkür ediyorum. 1. öneriniz hata satırını ortadan kaldırdı ancak bu seferde for each döngüsünde 3 kere next yapıp " If fark > 0 " koşulunu dikkate almadan end select yapıyor. 2. öneriniz de ise for each döngüsünde hata mesajı veriyor.

Dikkat çektiğiniz hususları değerlendirerek başka bir döngü kurmaya çalışacağım.

Saygılarımla.
 
Üst